Rozmiar JButtonów

0

Mam coś takiego:

JPanel panel=new JPanel();
for(int i=0;i<100;i++){
 JButton button=new JButton();
 //button.setMinimumSize(new Dimension(100,270));
 button.setSize(100, 270);
 panel.add(button);
}
panel.setMinimumSize(new Dimension(100,300));
JScrollPane scrollPane=new JScrollPane(panel,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

Jak zrobić żeby wszystkie przyciski miały conajmniej 270 wysokości ??

0

pierwszy sposob:

JPanel panel=new JPanel();
/*domyslny layout to o ile pamietam BorderLayout wiec
 *jezeli chcesz w poziomie dodac to uzyj FlowLayout lub
 *w pionie BoxLayout na osi Y
 */
 panel.setLayout(new FlowLayout(FlowLayout.LEFT));
 /*jezeli faktycznie chcesz kozystac z tych przyciskow to zrob je w tablicy*/
 JButton[] button=new JButton[100];
for(int i=0;i<button.length;i++){
 button[i]=new JButton();
 button[i].setPreferredSize(new Dimension(100, 270));
 panel.add(button[i]);
}

drugi sposob:

JPanel panel=new JPanel();
Point p=new Point(0,0);
panel.setLayout(null); //brak layoutu, wszystkie komponenty rozmieszcza sie recznie

JButton[] button=new JButton[100];

for(int i=0;i<button.length;i++){
	button[i]=new JButton();
 	panel.add(button[i]);
 
 	//pierwsze 2 argumenty to polozenie, pozostale 2 rozmiar
 	button[i].setBounds(p.x, p.y, 100, 270);
 	p=new Point(p.x, p.y+275); //wersja w pionie dla odmiany
}

nie testowalem tego więc mogą być jakieś błędy

0

wszystko fajnie, ale mi metoda setSize() wcale nie zmienia rozmiaru wyświetlanego. A zaraz jak stworze przycisk to rozmiar jest = 0,0 - powiedziała mi metoda getSize() przycisku, o co kaman?

0

Po utworzeniu JButtona ma on rozmiary zerowe i nic w tym zagadkowego nie ma.
Jeżeli nie korzystasz z menadżera rozkładu (setLayout(null)), to rozmiar i położenie ustalasz sam wywołując metodę setBounds() dla JButtona. Jeżeli nie korzystasz, to rozmiar i położenie ustala wywołanie metody pack() dla kontenera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1