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