JDialog不显示正确的文本

时间:2013-12-09 01:01:22

标签: java swing jlabel joptionpane jdialog

我正在为我的程序创建一个“关于”对话框并遇到了问题。每当我启动对话框时,标题文本设置正确,但对话框中的文本显示“JOptionPane Message”。之前它甚至不会显示我添加到对话框中的标签,但是它已经修复了(我不完全确定如何),但现在它显示了添加的文本和“JOptionPane消息”。

对话框的代码:

    about.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent ae) {
            JOptionPane optionPane = new JOptionPane();
            JDialog dialog = optionPane.createDialog("About");
            JLabel aboutText = new JLabel("Text goes here", JLabel.CENTER);
            dialog.add(aboutText, BorderLayout.NORTH);
            dialog.setVisible(true);
        }
    });

所以文字现在有效,这很好。但是,如何摆脱“JOptionPane Message”的部分?

3 个答案:

答案 0 :(得分:3)

我认为人们忘记了JOptionPane有多强大......

如果您提供的Stringmessage ObjectJOptionPane会创建一个JLabel来显示它,如果您提供某种{ {1}},Component只会使用它,例如......

enter image description here

JOptionPane

答案 1 :(得分:2)

以下是您采取关于对话框的方法。另外,它只有一行代码!

JOptionPane.showMessageDialog(this, "Text goes here", "About", JOptionPane.INFORMATION_MESSAGE);

我假设此代码位于JFrame的子类中。如果没有,请将this替换为要在其中显示对话框的窗口内的任何组件,或仅将null替换为屏幕中心。

您可能还想将“文字转到此处”更改为您自己的自定义消息文本。

要更改消息类型,请将JOptionPane.INFORMATION_MESSAGE更改为以下之一:

  • JOptionPane.ERROR_MESSAGE
  • JOptionPane.WARNING_MESSAGE
  • JOptionPane.QUESTION_MESSAGE
  • JOptionPane.PLAIN_MESSAGE

答案 2 :(得分:1)

这是因为您使用的是默认构造函数new JOptionPane()。来自docs

  

使用测试消息创建JOptionPane。

此测试消息为"JOptionPane Message"

如果您使用构造函数new JOptionPane("A Message"),那么该消息将变为"A Message",其中此构造函数正在使用Object,因此使用Label将代码变为

JLabel aboutText = new JLabel("Text goes here", JLabel.CENTER);
JOptionPane o = new JOptionPane(aboutText);
JDialog dialog = optionPane.createDialog("About");
dialog.setVisible(true);

您也可以使用构造函数new JOptionPane(null)来没有对象或默认消息,以便您可以在以后添加它们。