2014-05-11 31 views
0

好的,這是問題所在。如何在java.awt.graphics中使用drawString()時使用多種顏色?

g.setColor(Color.WHITE); 
g.drawString("all your base belong to us",x,y); 

下面的代碼使得顯示的字符串是白色和完全白色。

我的目標是製作字符串的某個部分,比如說,我希望該字符串中的單詞「base」是不同的顏色,在這種情況下是黃色。

,我將最有可能使用的將是代碼:

g.drawString("all your #ffd700base belong to us",x,y); 

該代碼試圖設置文本是由「基地」一路句子的黃底。

雖然的輸出是:

http://i.stack.imgur.com/lB2WC.png

忽略的背景,只是看的字符串。 「#ffd700」成爲顯示的字符串的一部分。

這不起作用,我找不到解決方案。

+0

我認爲你不能在1行中完成。從javadoc'g.drawString''使用此圖形上下文的當前字體和顏色繪製由指定字符串給出的文本。最左邊的字符的基線位於該圖形上下文的座標系中的位置(x,y)。「因此,您需要設置一種顏色,寫入一段文本,設置顏色」#ffd700「,繪製另一段文本並等等... –

+0

Aww,這很糟糕,因爲那麼我必須創建一個新的Graphics對象,將x和y設置得比以前的消息多一點。無論如何,我會看看是否還有更多解決方案。 – user3625168

回答

0

同樣的問題在這裏解決。請看看下面的帖子:

示例代碼的代碼在上面的鏈接提到的一些變化後:

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import javax.swing.CellRendererPane; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class PaintComponentTest extends JPanel { 

    private static final String s = "<html>all your <font color=\"#ffd700\">base</font> belong to us</html>"; 
    private JLabel renderer = new JLabel(s); 
    private CellRendererPane crp = new CellRendererPane(); 
    private Dimension dim; 

    public PaintComponentTest() { 
     this.setBackground(Color.lightGray); 
     dim = renderer.getPreferredSize(); 
     this.add(crp); 
    } 

    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     renderer.setForeground(Color.WHITE); 
     crp.paintComponent(g, renderer, this, 10, 10, dim.width, dim.height); 
    } 

    private void display() { 
     JFrame f = new JFrame("PaintComponentTest"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.getContentPane().add(this); 
     f.pack(); 
     f.setSize(200, 70); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new PaintComponentTest().display(); 
      } 
     }); 
    } 
} 

截圖:

enter image description here

+0

這不起作用,即使我將Graphics轉換爲graphics2d並創建一個名爲g2的對象,然後使用html,它使用html。 – user3625168

+0

看看第一個鏈接 – Braj

相關問題