我正在为我的程序创建一个“关于”对话框并遇到了问题。每当我启动对话框时,标题文本设置正确,但对话框中的文本显示“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”的部分?
答案 0 :(得分:3)
我认为人们忘记了JOptionPane
有多强大......
如果您提供的String
为message
Object
,JOptionPane
会创建一个JLabel
来显示它,如果您提供某种{ {1}},Component
只会使用它,例如......
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)
来没有对象或默认消息,以便您可以在以后添加它们。