formatando texto na checkbox de diálogo

Eu tenho um JOptionPane:

JOptionPane.showMessageDialog(null, text); 

O texto é uma picada:

 String text = "Hello world." 

O que eu quero fazer é mudar a cor do texto, especificamente uma única palavra, vamos dizer ‘Olá’. Então, o que eu tentei é:

 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); 

Eu não estou familiarizado com attributetext () e isso não vai funcionar. Isso faz isso:

java.text.AttributedString@479c479cworld”

Há um passo que estou perdendo? Este não é o caminho certo? Alguma sugestão?

Deve ser possível usar html para resolver isso, ou seja,

 String t = "Hello world!"; 

Veja http://docs.oracle.com/javase/tutorial/uiswing/components/html.html para mais informações.

Você pode passar um Component para JOptionPane no parâmetro de mensagem e usará isso para exibir sua mensagem.

Algo como um JLabel ou um JPanel com labels nele.

ATUALIZADA

Exemplos de texto JLabel, JPanel e 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 = "The Quick brown fox"; 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; } } 

No Mac-

Exemplo de JOptionPane no Mac

No Windows –

Exemplo de JOptionPane no Windows