java如何使用给定参数动态创建JPanel?
我的项目中有主要的JFrame
。以及一个带有Y-AXIS BoxLayout
的主JPanel
,用于包含其中的另一个面板。这是我默认使用JFrame
来显示JPanel
的方式(我不太确定这是否正确):
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
mainPanel = new MainScreenPanel();
MainFrame mainFrame = new MainFrame();
mainFrame.setContentPane(mainPanel);
mainFrame.invalidate();
mainFrame.validate();
mainFrame.setVisible(true);
}
});
}
接下来,我将两个JPanel添加到mainPanel
中,如下所示:
public class MainScreenPanel extends javax.swing.JPanel {
public MainScreenPanel() {
StatusPanel sPanel = new StatusPanel();
LogPanel lPanel = new LogPanel();
add(sPanel);
add(lPanel);
}
}
lPanel
上有不同的gui元素。其中一个按钮打开另一个面板(addConnectionPanel),并替换jFrame
中的mainPanel
。我的方法如下:
private void addCnctButtonActionPerformed(java.awt.event.ActionEvent evt) {
JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
topFrame.setContentPane(new AddConnectionPanel());
topFrame.invalidate();
topFrame.validate();
}
AddConectionPanel
有一些标签和输入文本框。它有两个按钮ok
和cancel
。以下是cancel
按钮的代码:
private void cancelCnctBtnActionPerformed(java.awt.event.ActionEvent evt) {
JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
topFrame.setContentPane(new MainScreenPanel());
topFrame.invalidate();
topFrame.validate();
}
sPanel
为空。在AddConnectionPanel
上的输入框未填满且未按下“确定”按钮之前,该字段必须为空。执行这些操作时,我想动态创建JLabels
,它从sPanel
上的输入获取参数。标签应该分组,所以当第二次执行操作时,必须创建新的组。有人能给我一些建议吗?让我看看我的错误?请记住,我正在使用NetBeans
# 1 楼答案
这就是我的方法:
如您所见,AddConnectionPanel希望侦听器注册案例,单击“确定”或“取消”。因此,调整后的实现可能如下所示: