Java中的简单多彩文本

时间:2011-09-16 05:21:07

标签: java swing text colors

在编写了一个控制台应用程序之后(对于这里不值得一提的平凡的I / O任务),我认为我需要让文本变得多彩以便于阅读。我希望将它保存在命令提示符中,对Swing缺乏经验,但据我所知,没有办法做到这一点,我环顾了Swing API并找不到任何东西。

理想情况下,我可以使用

之类的东西
for(int i=0; i<aString.length(); i++){
    if(aString.charAt(i) == '?'){
        String pre = aString.substring(0,i);
        String post = aString.substring(i);
        aString = pre + red("?") + post;    //As you can see by red("?"), I have no idea what I'm doing
    }
}

这样我就可以遍历我之前打印的文本,插入着色信息并显示它。

有人能指出我正确的方向吗?方法,类,片段,什么?

3 个答案:

答案 0 :(得分:4)

您可以以html格式输出字符串,添加标记,其中包含着色。然后将HTML分配给JLabel或JTextPane。

答案 1 :(得分:1)

参考swing api

Link是一个小例子,可以使用JLabel中提供的所有功能,包括其中的文字颜色。

如果您只想以不同的颜色显示文字,请:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass extends JPanel {

  public void paint(Graphics g) {
    Dimension d = this.getPreferredSize();
    int fontSize = 20;

    g.setFont(new Font("TimesRoman", Font.PLAIN, fontSize));

    g.setColor(Color.red);

    g.drawString("Hello 1", 10, 20);

    g.setColor(Color.black);

    g.drawString("Hello 2", 30, 50);
  }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.getContentPane().add(new MainClass());

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200,200);
    frame.setVisible(true);
  }
}

答案 2 :(得分:1)

  

我希望将它保存在命令提示符中,对Swing缺乏经验

您可能会从Message Console获得一些想法。

enter image description here