Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java] JButtons op 'scrollable' JPanel

Pagina: 1
Acties:

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 14-11 21:17
Wie kan mij hier helpen om JButtons op een JPanel te krijgen en
zodra dit de hoogte van het JPanel overstijgt het betreffende JPanel
scrollable maakt. Tot nu toe heb ik enkel nog maar gezien hoe
een JScrollPane eruitziet, maar niet dat het ook effectief werkt.

Ik heb iets als volgt:
code:
1
2
3
4
5
6
...
scroller1   = new JScrollPane(Tab1_Subpan1); //scroller
scroller1.setLayout(null);
scroller1.setBounds(50, 60, 1000, 600);
Tab1_dailysummary.add(scroller1,null);
...

Hierin is Tab1_dailysummary ee JPanel op een JTabbedPane
en Tab1_Subpan1 een JPanel op Tab1_dailysummary.
Ik heb al veel geprobeerd om het werkende te krijgen, maar het
lukt me niet om het JPanel te laten scrollen van zodra de buttons
die ik plaats de hoogte van Tab1_Subpan1 overstijgt.

De JButtons plaats ik via een factory-method zoals:
code:
1
2
3
4
5
6
void ButtonPlacer(String titel, int x, int y, Color t){     
        knop = new JButton(titel);
        knop.setBounds(x,y,120,50);
        knop.setBackground(t);
        scroller1.add(knop);    
    }

[ Voor 13% gewijzigd door RainerSGF op 21-03-2014 22:29 ]

Systeem - I'm learning, I learn it from a book :)


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Wat is je probleem? Je hebt alles al genoemd. Je kan gewoon JButtons in een JPanel stoppen wat je weer in een JScrollPane stopt:
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
// define constants
final int width = 100;
final int height = 200;
final int buttonCount = 20;

// create panel ...
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(buttonCount, 1));    

// ... with buttons
for (int i = 0; i < buttonCount; i++) {
    JButton button = new JButton("Button " + i);
    panel.add(button);
}

// create scrollpane
JScrollPane scrollpane = new JScrollPane(panel);
scrollpane.setPreferredSize(new Dimension(width, height));

// create frame
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(scrollpane);

// show
frame.pack();
frame.setVisible(true);


edit:
Je maakt waarschijnlijk een denkfoutje: de JPanel moet groter worden bij meer JButtons. Als de JPanel dan groter wordt dan de JScrollPane waar hij in zit komen er Scrollbars

[ Voor 12% gewijzigd door Daos op 22-03-2014 00:38 ]


  • perseus93
  • Registratie: Maart 2014
  • Laatst online: 13-10 20:36
Ik weet overigens niet welke ide je gebruikt,
maar eclipse heeft een zeer handige wysiwyg windowbuilder plugin (window builder pro (?)) wat dit soort problemen doorgaans meteen voor je regelt ;)

  • Lethalis
  • Registratie: April 2002
  • Niet online
Daos schreef op zaterdag 22 maart 2014 @ 00:18:
Je maakt waarschijnlijk een denkfoutje: de JPanel moet groter worden bij meer JButtons. Als de JPanel dan groter wordt dan de JScrollPane waar hij in zit komen er Scrollbars
Dit dus.

Ask yourself if you are happy and then you cease to be.


  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 14-11 21:17
Dank u, dat zal inderdaad de denkfout geweest zijn. Toch nog een vraag. Ik zie dat je voor het panel
'GridLayout' gebruikt. Zou het ook kunnen om de layout op 'null' te zetten en te werken adhv. coördinaten
waarbij ik zelf de knoppen ergens op het paneel kan zetten? (k'heb het namelijk geprobeerd, maar
dan krijg ik terug de ganse problematiek met die scrollbars).


OK, dat is bij deze opgelost. Nu snap ik het goed. Inderdaad als het panel groter is dat de scrollpane
komen de scrollbars tevoorschijn. Wat ben ik gelukkig eens ik dit gevonden nu heb. Me er suf op zocht met allerlei code.

[ Voor 24% gewijzigd door RainerSGF op 22-03-2014 19:16 ]

Systeem - I'm learning, I learn it from a book :)