我正在NetBeans中设计一个应用程序,如下面的屏幕截图所示。
当用户点击JFrame上的JButton时,会弹出一个JDialog,要求用户使用数字键盘输入数值。我希望JDialog动态添加2个JPanel。 JPanel 1将包含一个输入文本框。 JPanel 2将包含一个数字小键盘。我用这种方式设计它们,这样我就可以在需要时重复使用数字键盘。我面临的问题是动态显示弹出的JDialog上的这两个JPanel。 JDialog弹出空白。请看下面的代码。谢谢大家,感谢您的帮助
这是JDialog的示例代码:
public class MyDialog extends javax.swing.JDialog {
public MyDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {//Add JPanel 2 (Numeric Keypad) to JDialog
Container contentPane = getContentPane();
NumericKeypadPanel nkp = new NumericKeypadPanel();
nkp.setLayout(new java.awt.BorderLayout());
contentPane.removeAll();
contentPane.add(nkp);
contentPane.validate();
contentPane.repaint();
}
});
}
这是JPanel 2(数字小键盘)的示例代码:
public class NumericKeypadPanel extends javax.swing.JPanel {
/** Creates new form NumericKeypadPanel */
public NumericKeypadPanel() {
initComponents();//Draws 10 number buttons
}
}
答案 0 :(得分:3)
basicall有两种方式
1)通过在屏幕上保持JComponent
大小(以像素为单位)添加新的JDialog
,所有JCompoenets
或者其中一部分可能会缩小
2)通过调用JDialog
调整pack()
的大小,然后JDialog
将调整大小
both my a.m. rulles works使用Standard LayoutManagers(AbsoluteLayout除外)
答案 1 :(得分:1)
NumericKeypadPanel的initComponents()函数是什么?如果它实际上没有创建组件,那么您不会在对话框中看到任何内容。我在NumericKeypadPanel的构造函数中添加了一行来更改此面板的背景颜色,实际上,它在对话框中显示为绿色面板。
public NumericKeypadPanel() {
//initComponents();//Draws 10 number buttons
setBackground(Color.green);
}