好的,这就是问题所在。
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);
该代码尝试将文本从“base”设置为黄色一直到句子的末尾。
虽然输出是:
http://i.stack.imgur.com/lB2WC.png
忽略背景,只看字符串。 “#ffd700”成为字符串的一部分,然后显示。
这不起作用,我找不到解决办法。
答案 0 :(得分: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();
}
});
}
}
截图: