2011-09-16 84 views
1

編寫控制檯應用程序(對於世俗I/O任務不值得一提)後,我決定爲了可讀性而需要使文本變得多彩。我希望將它保留在命令提示符下,對Swing沒有經驗,但據我所知,沒有辦法做到這一點,我環顧Swing API並找不到任何東西。Java中的簡單彩色文本

理想情況下,我可以使用類似

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 
    } 
} 

,這樣我可以剛剛經歷我以前打印的文本循環,插入表象信息,並顯示它。

任何人都可以指向正確的方向嗎?方法,類,片段,什麼?

+0

我認爲有可能是一個控制檯的便攜性問題,因爲不是每一個控制檯可以處理顏色和顏色標記。 Linux有'ncurses',但它有Java API嗎? – pupssman

回答

1

我會一直喜歡將它保持在命令提示符下,爲缺乏經驗與Swing

你可能會從Message Console得到一些想法。

enter image description here

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

您可以輸出爲HTML格式的字符串添加標籤,其中着色的預期。然後將HTML分配給JLabel或JTextPane。