如何将按钮添加到特定的 JPanel 中
How to add a button into a specific JPanel
我有一个大面板。 bigPanel里面有多个panel(panel_1, panel_2, panel_3, etc....)
bigPanel 使用 GridBagLayout。 panel_1 等使用 GridLayout。
在另一个面板中,我创建了一个添加按钮。如果用户单击此按钮,将出现一个 JDialog,用户必须填写以下表格:
- 按钮名称:
- 人数:
- 字母表:
用户填写完JDialog表单后,将基于JDialog表单创建一个新按钮。
这段代码将在用户点击 JDialog 窗体中的 FINISHED 按钮后执行:
if(Number=="1"){
if(Alphabet=="A")
{
JButton newButton = new JButton(buttonName);
//bigPanel.add(newButton);
//bigPanel.updateUI();
panel_1.add(newButton);
panel_1.updateUI();
JOptionPane.showMessageDialog(null,"Successfully added !");
}
}
else if(Alphabet=="B"){
JButton newButton = new JButton(buttonName);
//bigPanel.add(newButton);
//bigPanel.updateUI();
panel_2.add(newButton);
panel_2.updateUI();
JOptionPane.showMessageDialog(null,"Successfully added !");
}
...
}
if (Number=="2"){
...
}
...
我用数字 1 和字母 A 测试了 JDialog。目前我得到的结果是在控制台中发出警告,表明此行有问题:
panel_1.add(newButton);//line 313
控制台警告:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at UI2.actionPerformed(UI2.java:313)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
未添加按钮。但是如果我改成
bigPanel.add(newButton);
bigPanel.updateUI();
新按钮已添加到 bigPanel。不幸的是,我希望将 newButton 添加到 panel_1 而不是 bigPanel..
请检查是否添加了panel_1
我有一个大面板。 bigPanel里面有多个panel(panel_1, panel_2, panel_3, etc....)
bigPanel 使用 GridBagLayout。 panel_1 等使用 GridLayout。
在另一个面板中,我创建了一个添加按钮。如果用户单击此按钮,将出现一个 JDialog,用户必须填写以下表格:
- 按钮名称:
- 人数:
- 字母表:
用户填写完JDialog表单后,将基于JDialog表单创建一个新按钮。
这段代码将在用户点击 JDialog 窗体中的 FINISHED 按钮后执行:
if(Number=="1"){
if(Alphabet=="A")
{
JButton newButton = new JButton(buttonName);
//bigPanel.add(newButton);
//bigPanel.updateUI();
panel_1.add(newButton);
panel_1.updateUI();
JOptionPane.showMessageDialog(null,"Successfully added !");
}
}
else if(Alphabet=="B"){
JButton newButton = new JButton(buttonName);
//bigPanel.add(newButton);
//bigPanel.updateUI();
panel_2.add(newButton);
panel_2.updateUI();
JOptionPane.showMessageDialog(null,"Successfully added !");
}
...
}
if (Number=="2"){
...
}
...
我用数字 1 和字母 A 测试了 JDialog。目前我得到的结果是在控制台中发出警告,表明此行有问题:
panel_1.add(newButton);//line 313
控制台警告:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at UI2.actionPerformed(UI2.java:313)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
未添加按钮。但是如果我改成
bigPanel.add(newButton);
bigPanel.updateUI();
新按钮已添加到 bigPanel。不幸的是,我希望将 newButton 添加到 panel_1 而不是 bigPanel..
请检查是否添加了panel_1