Ich entwickle eine GUI, die die Java Swing Bibliothek verwendet. Ich möchte einige JButtons zu einem Jpanel hinzufügen, das ein Gridlayout als Layout verwendet, aber ich habe ein Problem, die Größe des Panels ist ungefähr die gesamte Größe des Monitors, aber die Größe der JButtons kann unterschiedlich sein, ich kann ein 3*3 Array von JButtons zum Panel hinzufügen, während ich ein 10 * 10 Array zum Panel hinzufügen kann, das Problem ist, dass, wenn ich ein 3*3 hinzufüge, die JButtons so groß sein würden, dass sie das gesamte Display einnehmen, auch die JPanel auf der Oberseite des aktuellen JPanel (die Optionen genannt wird), was sollte ich tun, um eine konstante Größe für JButtons, so dass ihre Größe nicht geändert, auch wenn sie 2 Jbuttons (die jetzt nimmt die gesamte Anzeige) (die setSize-Funktion wird nicht funktionieren, und ich möchte das Layout zu einem GridLayout, nicht null), hier sind einige Teile des Codes:
public class Edit extends JFrame{
public Edit ()
{
width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth();
height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight();
newer = new JButton(new ImageIcon(b)) ;
done = new JButton(new ImageIcon(f)) ;
savior = new JButton(new ImageIcon(d)) ;
undo = new JButton(new ImageIcon(h)) ;
newer.setSize(200, 60);
done.setSize(200, 60);
savior.setSize(200, 60);
undo.setSize(200, 60);
options = new JPanel();
options.setSize(width , 100);
options.setLayout(new GridLayout(1,5,(width- 1000)/6,20)) ;
options.add(newer);
options.add(done);
options.add(savior);
options.add(undo);
options.setBackground(Color.magenta);
options.add(selector);
this.setExtendedState(this.MAXIMIZED_BOTH);
this.setUndecorated(true);
this.setVisible(true);
view = new JPanel();
regions = new JButton[3][3];
view.setSize(width, height - 100) ;
view.setLayout(new GridLayout(3,3));
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
regions[i][j] = new JButton();
regions[i][j].setSize(80,80) ;
view.add(regions[i][j]);
}
editPhase = new JPanel();
editPhase.setLayout(null);
editPhase.add(options,BorderLayout.NORTH);
editPhase.add(view,BorderLayout.SOUTH);
this.add(editPhase);
}
}
vielen Dank im Voraus.