[JAVA] toevoegen van Panels aan JFrame

Pagina: 1
Acties:

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Beste mensen,

Ik ben druk bezig met een UI'tje maar wil niet echt lukken
ik wil 3 Panels toevoegen aan mijn JFrame hieronder de code

JFrame klasse
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class GFS_Main extends JFrame {
  private Border empty;
  
  private Panel_TreeMenu treePanel;
  private Panel_StatusBar statusbarPanel;
  private Panel_Content contentPanel;

  public GFS_Main() {
    setTitle("Global Flex Solutions");
    setSize(1024,768);
//    setExtendedState(JFrame.MAXIMIZED_BOTH);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setResizable(false);
    
    //ContentPane
    JPanel content =(JPanel) getContentPane();
    content.setLayout(new BorderLayout());
    
    //Border
    empty = new EmptyBorder(5,5,5,5);
    content.setBorder(empty);
    
    //Panels
    treePanel = new Panel_TreeMenu();
    contentPanel = new Panel_Content();
    statusbarPanel = new Panel_StatusBar();
    
    //Add panels
    content.add(treePanel, BorderLayout.WEST);
    content.add(contentPanel, BorderLayout.CENTER);
    content.add(statusbarPanel, BorderLayout.SOUTH);
    
    //Look & Feel
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch(Exception e) {
      System.out.print(e + "");
    }

  }

  public static void main(String[] args) {
    GFS_Main gui = new GFS_Main();
  }
}


en hieronder de treePanel klasse
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Panel_TreeMenu extends JPanel {
  private JTree tree; 
  private DefaultTreeModel treeModel;
  private DefaultMutableTreeNode topNodeGFS, nodeReservation, nodeMember, nodeWorkspaces,nodeCapacities, nodeUsage;
  private DefaultMutableTreeNode nodeFlexprod, nodeLocations;

  private DefaultMutableTreeNode nodeReservationSearch, nodeReservationCreate, nodeReservationEdit, nodeReservationDelete;
  private DefaultMutableTreeNode nodeMemberSearch, nodeMemberCreate, nodeMemberEdit, nodeMemberDelete, nodeWorkspacesSearch;
  private DefaultMutableTreeNode nodeWorkspacesCreate, nodeWorkspacesEdit, nodeWorkspacesDelete,nodeCapacitiesSearch;
  private DefaultMutableTreeNode nodeCapacitiesCreate, nodeCapacitiesEdit, nodeCapacitiesDelete, nodeUsageSearch;
  private DefaultMutableTreeNode nodeUsageCreate, nodeUsageEdit, nodeUsageDelete, nodeFlexprodSearch, nodeFlexprodCreate;
  private DefaultMutableTreeNode nodeFlexprodEdit, nodeFlexprodDelete, nodeLocationsSearch, nodeLocationsCreate;
  private DefaultMutableTreeNode nodeLocationsEdit, nodeLocationsDelete;
  
  public Panel_TreeMenu() {
    setLayout(new BorderLayout());
    setBackground(Color.white);
    
 //DOET ER NIET TOE.....


    treeModel = new DefaultTreeModel(topNodeGFS);
    tree = new JTree(treeModel);
    tree.setSize(200,600);
    tree.setVisible(true);
    tree.setEnabled(true);

    Border border = new SoftBevelBorder(BevelBorder.LOWERED);
    tree.setBorder(border);

    add(tree, BorderLayout.CENTER);

    
  }
}


nu is dus mijn probleem als ik dit run krijg ik een heel mooi grijs scherm te zien zonder mijn mooie JTree :( heeft iemand enig idee wat ik fout doe en waarom ik hem niet te zien krijg op het scherm ik heb zelf echt geen enkel idee namelijk

iRacing Profiel


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 08-05 19:46

Robtimus

me Robtimus no like you

GFS_Main, regel 12: zet die setVisible(true) eens op het EINDE van de constructor, dan werkt het wel.

Heb ik ook 10 minuten op gezeten...


Hoe dan ook, 2-3 dingen die je meestal pas op het einde doet:
- packen
- eventueel centreren
- dan pas laten zien (setVisible(true))

Bij voorkeur laat je het centreren en laten zien over aan de method die je frame creeert (main method vaak), maar dat hoeft niet.

[ Voor 50% gewijzigd door Robtimus op 12-04-2005 21:58 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Hmm.. Ik zou eerst die tree eens in een JScrollPane plaatsen. En als ik het vermoeden heb dat een panel niet aankomt (gebeurt soms), dan gooi ik er ff een panel met een gekke kleur in. Probeer eerst die dan te traceren.. kan je later jouw JTree erin zetten.

Verder zou ik trouwens die setVisible helemaal aan het einde gaan doen.

[edit]
Iceman loopt mij weer eens te voorapen :+

[ Voor 9% gewijzigd door Alarmnummer op 12-04-2005 21:57 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 08-05 19:46

Robtimus

me Robtimus no like you

Laat ik je dan ook maar naapen door te bevestigen dat een scrollpane een heel goed idee is.
Java:
1
2
3
JScrollPane scrollpane = new JScrollPane();
scrollpane.getViewport().add(tree);
add(scrollpane);

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Bedankt allemaal het was idd. de setVisible en dat van die kleuren had ik ook al geprobeerd :)

nu zit ik nog wel met een andere stom iets. als ik hem netjes toevoeg staat ie er wel heel erg mooi maar hij pakt de standaard breedte die de Tree heeft en ik wil mijn tree breeder hebben dan dat hij standaard pakt
en als ik setSize gebruik of iets dergelijks dan luistert mijn Panel daar helemaal niet naar

heeft iemand nog enig idee hoe ik op kan geven hoeveel breedte dat JPanel dat ik toevoeg in beslag mag nemen of hoe ik de breedte van mijn JTree instel?

iRacing Profiel


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

pref size :)

Er is nog een kortere notatie om een JScrollPane aan te maken:
JScrollPane pane = new JScrollPane(tree)

[ Voor 82% gewijzigd door Alarmnummer op 12-04-2005 22:04 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 08-05 19:46

Robtimus

me Robtimus no like you

Je kunt bij Swing beter preferred size gebruiken dan size als je groottes wilt zetten; opvragen moet nog wel met de size.

De minimum en maximum size werken voor veel layout managers en containers niet zoals je zou verwachten heb ik gemerkt, dus daar zou ik niet te veel op vertrouwen.

edit:
en nu is Alarmnummer mij te vroeg af :P

[ Voor 9% gewijzigd door Robtimus op 12-04-2005 22:05 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
tnx voor alle mooie oplossingen en van dat scrollpane zo ver was ik nog niet maar dat was ik al van plan :) want het wordt een beetje een dynamische Tree

iRacing Profiel

Pagina: 1