Hi all,
Kheb een probleempje met een GUI die ik aan het maken ben. Het probleem is als volgt:
Ik wil een soort lijst maken zoals in MSN. De lijst is dan verdeeld in groepen en als je op een knop van een bepaalde groep drukt expand of collapsed de lijst. Ik heb nu het volgende:
Waarom geen CardLayout? Omdat CardLayout alle Components zo groot maakt als het grootse Component wat toegevoegd is aan de container... En dat wil ikniet
Alles wordt goed getekend als de ScrollPane moet "scrollen". Is dit niet het geval (er is geen scrollbar), dan wordt er niet goed getekend.
Een paar plaatjes ter verduidelijking:
Hmmm, plaatje linken gaat niet van Geocities, dan maar zo:
http://www.geocities.com/ndf_82/init.png begin
http://www.geocities.com/ndf_82/klik1.png] 1e klik op knop
http://www.geocities.com/ndf_82/klik2.png] 2e klik op knop
http://www.geocities.com/ndf_82/resize.png] resizen van JFrame
http://www.geocities.com/ndf_82/klik3.png] 3e klik op knop
http://www.geocities.com/ndf_82/klik4.png] 4e klik op knop
en de source
Wie o wie kan mij helpen?
Kheb een probleempje met een GUI die ik aan het maken ben. Het probleem is als volgt:
Ik wil een soort lijst maken zoals in MSN. De lijst is dan verdeeld in groepen en als je op een knop van een bepaalde groep drukt expand of collapsed de lijst. Ik heb nu het volgende:
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
| public class TestFrame extends JFrame { JScrollPane scrollPane = new JScrollPane(); JPanel backPanel = new JPanel(); public TestFrame() { initGUI(); } private void initGUI() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300, 400); getContentPane().setLayout(new BorderLayout()); getContentPane().add(scrollPane, BorderLayout.CENTER); scrollPane.getViewport().add(new ExpandableList()); } private class ExpandableList extends JPanel { JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JButton button1 = new JButton("b1"); JButton button2 = new JButton("b2"); JList list1 = new JList(new String[] {"1", "2", "3"}); public ExpandableList() { initGUI(); } private void initGUI() { setLayout(new BorderLayout()); panel1.setLayout(new BorderLayout()); panel1.add(button1, BorderLayout.NORTH); panel2.setLayout(new BorderLayout()); panel2.add(button2, BorderLayout.NORTH); panel2.add(list1, BorderLayout.CENTER); button1.addActionListener(new Action1()); button2.addActionListener(new Action2()); add(panel1, BorderLayout.CENTER); } private class Action1 implements ActionListener { public void actionPerformed(ActionEvent e) { ExpandableList.this.remove(panel1); ExpandableList.this.add(panel2, BorderLayout.CENTER); //ExpandableList.this.invalidate(); //ExpandableList.this.panel2.validate(); //ExpandableList.this.validate(); ExpandableList.this.revalidate(); } } private class Action2 implements ActionListener { public void actionPerformed(ActionEvent e) { ExpandableList.this.remove(panel2); ExpandableList.this.add(panel1, BorderLayout.CENTER); //ExpandableList.this.invalidate(); //ExpandableList.this.panel1.validate(); //ExpandableList.this.validate(); ExpandableList.this.revalidate(); } } } } |
Waarom geen CardLayout? Omdat CardLayout alle Components zo groot maakt als het grootse Component wat toegevoegd is aan de container... En dat wil ikniet
Alles wordt goed getekend als de ScrollPane moet "scrollen". Is dit niet het geval (er is geen scrollbar), dan wordt er niet goed getekend.
Een paar plaatjes ter verduidelijking:
Hmmm, plaatje linken gaat niet van Geocities, dan maar zo:
http://www.geocities.com/ndf_82/init.png begin
http://www.geocities.com/ndf_82/klik1.png] 1e klik op knop
http://www.geocities.com/ndf_82/klik2.png] 2e klik op knop
http://www.geocities.com/ndf_82/resize.png] resizen van JFrame
http://www.geocities.com/ndf_82/klik3.png] 3e klik op knop
http://www.geocities.com/ndf_82/klik4.png] 4e klik op knop
en de source
Wie o wie kan mij helpen?
Pentium 233MHz MMX + Diamond Monster 3D 3DFX Voodoo II
