Java 在jdialog框中格式化文本

Java 在jdialog框中格式化文本,java,fonts,colors,awt,Java,Fonts,Colors,Awt,我有一个JOptionPane: JOptionPane.showMessageDialog(null, text); 该文本是一个标题: String text = "Hello world." 我想做的是改变文本的颜色,特别是一个单词,让我们说“你好”。所以我尝试的是: String t1 = "Hello"; String t2 = "world." Font serifFont = new Font("Serif", Font.BOLD, 12); AttributedString

我有一个JOptionPane:

JOptionPane.showMessageDialog(null, text);
该文本是一个标题:

String text = "Hello world."
我想做的是改变文本的颜色,特别是一个单词,让我们说“你好”。所以我尝试的是:

String t1 = "Hello";
String t2 = "world."
Font serifFont = new Font("Serif", Font.BOLD, 12);
AttributedString as = new AttributedString(t1);
as.addAttribute(TextAttribute.FONT, serifFont); 
as.addAttribute(TextAttribute.FOREGROUND, Color.red);


JOptionPane.showMessageDialog(null, as+t2);
我不熟悉AttributeText(),这不起作用。它是这样做的:

“java.text。AttributedString@479c479cworld"


有我错过的一步吗?这条路不对吗?有什么建议吗?

应该可以使用html来解决这个问题,即

String t = "<html><font color=#ffffdd>Hello</font> world!";
String t=“你好,世界!”;

有关更多信息,请参阅

您可以在message参数中将
组件
传递给JOptionPane,并使用该组件显示消息

类似于带有标签的
JLabel
JPanel

已更新

JLabel、JPanel和HTML文本示例

public class TestOptionPane {

    public static void main(String[] args) {

        JLabel label = new JLabel("Hello");
        label.setForeground(Color.RED);

        JOptionPane.showMessageDialog(null, label);

        JPanel pnl = new JPanel(new GridBagLayout());
        pnl.add(createLabel("The quick"));
        pnl.add(createLabel(" brown ", Color.ORANGE));
        pnl.add(createLabel(" fox "));

        JOptionPane.showMessageDialog(null, pnl);

        String text = "<html>The Quick <span style='color:green'>brown</span> fox</html>";
        JOptionPane.showMessageDialog(null, text);

    }

    public static JLabel createLabel(String text) {

        return createLabel(text, UIManager.getColor("Label.foreground"));

    }

    public static JLabel createLabel(String text, Color color) {

        JLabel label = new JLabel(text);
        label.setForeground(color);

        return label;

    }

}
公共类测试选项窗格{
公共静态void main(字符串[]args){
JLabel标签=新的JLabel(“你好”);
标签。设置前景(颜色。红色);
showMessageDialog(空,标签);
JPanel pnl=newjpanel(newgridbaglayout());
pnl.add(创建标签(“快捷”);
pnl.add(createLabel(“棕色”,颜色为橙色));
pnl.add(createLabel(“fox”));
showMessageDialog(null,pnl);
String text=“快速棕色狐狸”;
showMessageDialog(空,文本);
}
公共静态JLabel createLabel(字符串文本){
返回createLabel(text,UIManager.getColor(“Label.foreground”);
}
公共静态JLabel createLabel(字符串文本、颜色){
JLabel标签=新的JLabel(文本);
标签。设置前景(颜色);
退货标签;
}
}
在Mac上-

在窗户上-


这似乎对我不起作用,对话框文本中仍然有html标记。我可能没有正确执行此操作,请详细说明。如果这句话是:敏捷的棕色狐狸。我只想让“棕色”成为棕色?尝试了没有用,我知道十六进制不是因为棕色没有时间查找:String text=“快速棕色狐狸”。也尝试了:String text=“快速棕色狐狸。”
String t=“快速棕色狐狸。”
JOptionPane.showMessageDialog(null,t)这对我有效…这似乎也不起作用,JOptionPane.showmessagedialog()似乎对传递到文本字段的任何内容执行toString方法。所以它实际上显示的是组件的属性,而不是组件本身。@whitewolfpgh我回去扩展了我的测试代码,这一切似乎对我来说都很好……是的,我也能让你的工作。谢谢你把所有的信息放上去。它看起来像是eclipse上的一个“干净的项目”修复了这个问题>,要更快地获得更好的帮助,请发布一篇文章。