1

我想从参数中传递一种颜色来更改文本的颜色,但是当我将param元素放入 HTML 中时,根本没有显示颜色。我正在使用 Netbeans 7.1。

为什么不显示颜色?

HTML

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

2 回答 2

1

正如@Emmanuel Bourg 所讨论的,Color.getColor(String)不能按照您想要的方式使用它。Color.decode(String)改为查看。

g.setColor(Color.decode("#ff0000"));  // Very RED
于 2012-06-03T13:24:41.287 回答
1

Color.getColor()从系统属性中获取颜色,而不是从小程序参数中获取颜色。此外,此方法不适用于诸如 之类的颜色名称black,您必须使用数值。

如果你想从小程序参数中读取颜色,你可以像这样使用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);
}
于 2012-06-03T13:11:08.133 回答