java - 没有默认按钮的 JDialog

标签 java swing user-interface jpanel jdialog

我正在打开一个 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/

相关文章:

android - hdpi/mdpi/ldpi 的自定义 map 标记图标尺寸

java - 为什么我可以两次声明变量的数据类型?

java - JFrame最大化时如何调整JPanel的大小?

java - 带有滚动条的 JPanel 设置内容不可调整大小

Java:向程序添加用户界面

java - 一种布局将另一种布局推离屏幕

java.lang.ClassNotFoundException : org. apache.commons.fileupload.FileItemFactory

java - 在 Web 应用程序中更新数据库中的特定记录

java - 我想在 JLabel(s) 之间创建空间并将 JButtons 对齐到同一行

java - JFrame 最大化时隐藏窗口任务栏并设置未装饰