Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDialog不显示正确的文本_Java_Swing_Jlabel_Joptionpane_Jdialog - Fatal编程技术网

Java JDialog不显示正确的文本

Java JDialog不显示正确的文本,java,swing,jlabel,joptionpane,jdialog,Java,Swing,Jlabel,Joptionpane,Jdialog,我正在为我的程序创建一个关于对话框,遇到了一个问题。每当我启动对话框时,标题文本都会正确设置,但对话框中的文本会显示“JOptionPane消息”。以前它甚至不会显示我添加到对话框中的标签,但这已经解决了问题(我不完全确定如何解决),但现在它同时显示添加的文本和“JOptionPane消息” 对话框的代码: about.addActionListener(new ActionListener() { public void actionPerformed(ActionEv

我正在为我的程序创建一个关于对话框,遇到了一个问题。每当我启动对话框时,标题文本都会正确设置,但对话框中的文本会显示“JOptionPane消息”。以前它甚至不会显示我添加到对话框中的标签,但这已经解决了问题(我不完全确定如何解决),但现在它同时显示添加的文本和“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消息”部分呢?

以下是获取“关于”对话框的方法。另外,这只是一行代码

JOptionPane.showMessageDialog(this, "Text goes here", "About", JOptionPane.INFORMATION_MESSAGE);
我假设此代码位于
JFrame
的子类中。如果没有,请将
替换为窗口中要显示对话框的任何组件,或仅将
null
替换为屏幕中心

您可能还希望将“文本在此显示”更改为您自己的自定义消息文本

要更改消息的类型,请将
JOptionPane.INFORMATION\u message
更改为以下内容之一:

  • JOptionPane.错误消息
  • JOptionPane.警告消息
  • JOptionPane.QUESTION\u消息
  • JOptionPane.普通消息

以下是获取“关于”对话框的方法。另外,这只是一行代码

JOptionPane.showMessageDialog(this, "Text goes here", "About", JOptionPane.INFORMATION_MESSAGE);
我假设此代码位于
JFrame
的子类中。如果没有,请将
替换为窗口中要显示对话框的任何组件,或仅将
null
替换为屏幕中心

您可能还希望将“文本在此显示”更改为您自己的自定义消息文本

要更改消息的类型,请将
JOptionPane.INFORMATION\u message
更改为以下内容之一:

  • JOptionPane.错误消息
  • JOptionPane.警告消息
  • JOptionPane.QUESTION\u消息
  • JOptionPane.普通消息

我想人们忘记了JOptionPane的强大功能

如果将
字符串
作为
消息
对象
作业窗格
将创建一个
JLabel
来显示它,如果提供某种
组件
作业窗格
将简单地使用它,例如

JLabel label = new JLabel("Bring it on");
label.setIcon(new ImageIcon("logo.png"));
label.setHorizontalAlignment(JLabel.CENTER);
label.setVerticalTextPosition(JLabel.BOTTOM);
label.setHorizontalTextPosition(JLabel.CENTER);
JOptionPane.showMessageDialog(null, label, "About", JOptionPane.PLAIN_MESSAGE);


我想人们已经忘记了JOptionPane的强大功能

如果将
字符串
作为
消息
对象
作业窗格
将创建一个
JLabel
来显示它,如果提供某种
组件
作业窗格
将简单地使用它,例如

JLabel label = new JLabel("Bring it on");
label.setIcon(new ImageIcon("logo.png"));
label.setHorizontalAlignment(JLabel.CENTER);
label.setVerticalTextPosition(JLabel.BOTTOM);
label.setHorizontalTextPosition(JLabel.CENTER);
JOptionPane.showMessageDialog(null, label, "About", JOptionPane.PLAIN_MESSAGE);


出现这种情况是因为您使用的是默认构造函数
newjoptionpane()
。从:

创建带有测试消息的JOptionPane

此测试消息是
“JOptionPane消息”

如果使用构造函数
newjoptionpane(“消息”)
,则该消息将成为
“消息”
,其中该构造函数将获取一个对象,因此使用标签您的代码将成为

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)
来没有对象或默认消息,以便您可以在以后添加它们(如果愿意)。

出现这种情况是因为您使用的是默认构造函数
new JOptionPane()
。从:

创建带有测试消息的JOptionPane

此测试消息是
“JOptionPane消息”

如果使用构造函数
newjoptionpane(“消息”)
,则该消息将成为
“消息”
,其中该构造函数将获取一个对象,因此使用标签您的代码将成为

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

您还可以使用构造函数
newjoptionpane(null)
来没有对象或默认消息,以便您可以在以后添加它们(如果愿意)。

问题是,
JOptionPane.showMessageDialog有什么问题(这是aboutText,“About”,JOptionPane.INFORMATION\u消息)?问题是,我希望最终结果是一个以对话框为中心的徽标,下面显示“关于”文本。有没有一种方法可以通过showMessageDialog()实现这一点?我找了一下,但什么也没找到。您可以使用HTML格式化
字符串
,或者使用
JLabel
作为选项窗格的消息对象……因此我假设正确的方法是
JLabel labelName=new JLabel(“Text here”,imgIcon,JLabel.CENTER)?问题是,
JOptionPane.showMessageDialog(这个,aboutText,“About”,JOptionPane.INFORMATION\u MESSAGE)有什么问题?问题是,我希望最终结果是一个以对话框为中心的徽标,下面显示“关于”文本。有没有一种方法可以通过showMessageDialog()实现这一点?我找了一下,但什么也没找到。您可以使用HTML格式化
字符串
,或者使用
JLabel
作为选项窗格的消息对象……因此我假设正确的方法是
JLabel labelName=new JLabel(“Text here”,imgIcon,JLabel.CENTER)?这取决于您想要实现的目标;)-一般来说,你的答案没有错,这取决于你想要达到的目标;)-一般来说,你的回答没有问题,但这正是我所需要的,谢谢!将@tbodt的回答设置为解决方案,因为它与原始问题更相关。我不知道
setIcon()
,如果我没弄错的话,您只能在
showMessageDialog()
中使用一个标签,这就是我选择JDialog的原因。再次感谢@ThomasRamage查看我的答案,了解为什么会发生这种情况,您也可以放弃投票,也可以接受答案,以表明它仍然有用。@ThomasRamage,这取决于您的需要。您可以轻松地通过
JOptionPane
a
JPanel