我正在打开一个 JDialog,如下所示:
public JPanel buildAddFrame(){
JFrame frame = new JFrame();
JPanel contentPanel = (JPanel) frame.getContentPane();
contentPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
JPanel topButtonBar = new JPanel();
topButtonBar.setLayout(new BoxLayout(topButtonBar, BoxLayout.X_AXIS));
JTextField text = new JTextField("Hello there.");
topButtonBar.add(text);
contentPanel.add(topButtonBar);
return contentPanel;
}
public void buttonPressed(){
JOptionPane addDialog = new JOptionPane(buildAddFrame());
JDialog dialog = addDialog.createDialog(this, "Test dialog");
dialog.setVisible(true);
System.out.println("dialog closed.");
}
因此,当有人按下我的主窗体上的按钮时,会弹出对话框并要求在各种控件中进行输入(现在只有一个文本字段可以启动)。但我在两件事上遇到了麻烦:
1:底部有一个“确定”按钮,用户可以单击该按钮来关闭对话框,但我不希望这样。我想制作自己的按钮并放置它们和其他东西,那么有没有办法禁用此默认按钮并仅使用我创建的 JPanel 中我自己的按钮?
2:有没有办法通过 buttonPressed()
中的 dialog.*
或 addDialog.*
访问对话框中的控件?我想我可以在按下提交按钮时将控件的所有内容发送到某些变量,尽管这看起来有点懒。
谢谢
最佳答案
1) 不要使用 JOptionPane。直接创建一个 JDialog,然后向其中添加一个 JPanel,并根据需要布置您自己的控件。
2) 您可以直接评估添加到 JPanel 的控件。
例如:
public void buttonPressed(){
JDialog dialog = new JDialog();
JPanel panel = new JPanel();
JTextField tf = new JTextField();
panel.add(tf);
JButton ok = new JButton("ok");
panel.add(ok);
dialog.add(panel);
dialog.setVisible(true);
System.out.println("dialog closed. tf=" + tf.getText());
}
当然这看起来不太正确,你需要使用布局管理器。我建议使用 NetBeans 来构建表单。这样您就可以更轻松地自定义 JDialog。
关于java - 没有默认按钮的 JDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158433/