格式化jdialog框中的文本

时间:2012-08-17 14:52:30

标签: 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 as = new AttributedString(t1);
as.addAttribute(TextAttribute.FONT, serifFont); 
as.addAttribute(TextAttribute.FOREGROUND, Color.red);


JOptionPane.showMessageDialog(null, as+t2);

我不熟悉attributiontext(),这不会起作用。它这样做:

“java.text.AttributedString@479c479cworld”

我缺少一步吗?这不是正确的方法吗?有什么建议吗?

2 个答案:

答案 0 :(得分:6)

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

String t = "<html><font color=#ffffdd>Hello</font> world!";

有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/uiswing/components/html.html

答案 1 :(得分:4)

您可以在message参数中将Component传递给JOptionPane,并使用它来显示您的消息。

类似JLabelJPanel的标签。

<强>已更新

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;

    }

}

在Mac上 -

JOptionPane Example on Mac

在Windows上 -

JOptionPane example on Windows