我有一个名为 MyPanel 的类扩展 JPanel,使用 GridLayout。每个单元格包含一个小部件(JComboBox、JTextField、JLabel)。
我的主类,扩展 JFrame,使用 GridBagLayout。当我向其中添加 MyPanel 时,它占用了大量空间(所有窗口都水平地超出了我的桌面空间)。我该如何解决?这是我的主类的构造函数
public Client() {
super("title");
setResizable(false);
Container main_container = getContentPane();
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
main_container.setLayout(layout);
MyPanel jpanel_acquisto = new MyPanel();
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.fill = GridBagConstraints.NONE;
layout.setConstraints(jpanel_acquisto, c);
main_container.add(jpanel_acquisto);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
MyPanel 构造函数
super();
this.setLayout(new GridLayout(2,5));
combo_box_produttori = new JComboBox(lista_produttori);
combo_box_magazzini = new JComboBox(lista_magazzini);
descrizione = new JTextField("120 caratteri max", DESCRIPTION_MAX_LENGHT);
label_descrizione = new JLabel("Descrizione");
quantita_prodotti = new JTextField(20);
label_quantità = new JLabel("Numero prodotti");
salva_acquisto = new JButton("Salva acquisto");
this.add(Box.createGlue());
this.add(label_descrizione);
this.add(label_quantità);
this.add(Box.createGlue());
this.add(Box.createGlue());
this.add(combo_box_produttori);
this.add(descrizione);
this.add(quantita_prodotti);
this.add(combo_box_magazzini);
this.add(salva_acquisto);