【发布时间】:2014-01-25 21:04:00
【问题描述】:
我已经在 GUI 设计器的 JPanel 中初始化了我自己的 JPanel,但是当单击按钮时,我似乎仍然无法将此 JTextField 添加到我新创建的 JPanel 中。我没有收到任何错误,我尝试过重新验证、验证、重新绘制等等。我什至按照其他用户的建议将面板的布局设置为 BoxLayout,但这仍然不起作用。
fieldsPanel 是使用 GUI 设计器创建的,但我尝试覆盖它。
panel 是我自己的代码,我想添加到fieldsPanel。
public class Form extends JFrame {
private JPanel rootPanel;
private JPanel fieldsPanel;
private JPanel panel;
public Form() {
fieldsPanel = new JPanel();
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
setContentPane(rootPanel);
pack();
addFieldButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JTextField skuField = new JTextField();
panel.add(skuField);
fieldsPanel.add(panel);
pack();
repaint();
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
【问题讨论】:
-
你没有显示足够的代码让任何人真正看到发生了什么。尝试将其缩减为仅相关的内容,但仍将其设为SSCCE。 (例如,
panel是什么,fieldsPanel是什么,它们如何适合您的布局?) -
感谢您的回复,我更新了更多信息。
fieldsPanel是使用 GUI 设计器创建的,我尝试覆盖它。panel是纯代码。 -
如果这是
Form类的完整源代码,您永远不会初始化rootPanel或addFieldButton,并且fieldsPanel和panel都不会被添加到框架中。 -
我想通了。一切都通过 GUI 设计器正确初始化,例如,
fieldsPanel、rootPanel和addFieldButton都是通过设计器创建的,并在运行时在那里初始化。不需要覆盖任何其他内容,但您提示我panel没有被添加到框架并事先对其进行初始化。非常感谢! -
没问题;乐意效劳。但是,如果您将来遇到更复杂的事情,还可以查看 GUI Designer 为您生成的类的相关部分,以便我们可以看到您如何与生成的内容进行交互。
标签: java intellij-idea jpanel jcomponent gui-designer