我想从参数中传递颜色以更改文本的颜色,但是当我在HTML中放置param
元素时,根本没有显示任何颜色。我正在使用Netbeans 7.1。
为什么没有显示颜色?
<HTML>
<HEAD>
<TITLE>Applet HTML Page</TITLE>
</HEAD>
<BODY>
<H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3>
<P>
<APPLET codebase="classes" code="ex1/ex11.class" width=350 height=200>
<PARAM name="color" value="black"/>
</APPLET>
</P>
<HR WIDTH="100%"><FONT SIZE=-1><I>Generated by NetBeans IDE</I></FONT>
</BODY>
</HTML>
package ex1;
import java.awt.*;
import javax.swing.JApplet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class ex11 extends JApplet implements ActionListener{
int i ;
String color;
@Override
public void init()
{
Timer timer = new Timer(600, this);
timer.start();
i=0;
this.setSize(900,900);
}
@Override
public void paint(Graphics g)
{
g.clearRect(0, 0, this.getWidth(), this.getHeight());
g.setFont(new Font(Font.MONOSPACED, Font.BOLD, 40));
g.setColor(Color.getColor(getParameter("color")));
g.drawString(""+i, 250, 150);
}
public void actionPerformed(ActionEvent e)
{
if (i <5)
{
i= i+1;
repaint();
}
}
}
答案 0 :(得分:1)
Color.getColor()
从系统属性中获取颜色,而不是从applet参数中获取颜色。此方法也不适用于black
等颜色名称,您必须使用数值。
如果您想从applet参数中读取颜色,可以使用Apache Commons Configuration,如下所示:
DataConfiguration config = new DataConfiguration(new AppletConfiguration(applet));
Color color = config.getColor("color");
如果您不想引入依赖项,可以像这样解析颜色(仅适用于十六进制数值):
public Color getColor(String key) {
int i = Integer.parseInt(getParameter(key));
return new Color((i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);
}
答案 1 :(得分:1)
正如@Emmanuel Bourg所讨论的,Color.getColor(String)
无法按照您想要的方式使用它。请改为Color.decode(String)
。
g.setColor(Color.decode("#ff0000")); // Very RED