Java HTML - 通过点击更改小程序的颜色

Java HTML - Change Color of Applet by Click

大家好,我有个问题。 我目前正在学习 IT,我们开始使用 Java 进行编程。 所以我们的任务是用 Java 小程序编写一个 HTLM 站点,该小程序在单击时切换文本框的背景色和前景色。 所以这是代码,我绝对不确定哪里出了问题:

Java-文件:

import java.applet.*; //Applet
import java.awt.*; // Graphics, Color
public class HalloWeltPlus extends Applet
{
  Color vordergrundfarbe = Color.white; 
  Color hintergrundfarbe = Color.black;
public void paint( Graphics g)
{
  setForeground ( vordergrundfarbe);
  setBackground ( hintergrundfarbe); 
  g.drawString("Hello World...",50,50); // Bildschirmausschrift erzeugen
}
public void setColor()
{
  setForeground (hintergrundfarbe);
  setBackground (vordergrundfarbe);
  repaint( 100L);
}
}

HTML-文件:

<html>
<!-- Diese Seite bindet das HalloWelt - Applet ein. -->
 <head>
  <title>
    HalloWeltPlus
   </title>
 </head>
  <body>
   <!-- Applet -->
  <applet
    code=HalloWeltPlus.class name=A width=170 height=100>
   </applet>
   <a onClick="document.A.setColor()"></a>
 <p>
  </body>
 </html>

所以当我点击框时没有任何反应 - 请帮助我 :)

您无法仅通过名称属性与 DOM 元素通信。在你的小程序中添加 id="A",并在 A 标签中添加一些单词,使一切正常。

document.A <== this指的是id="A"

的一个元素

更新: 您的 Java 中存在错误。 repaint() 只是安排调用您的绘画函数,但会告诉系统代表您准备好图形 "g" 对象。

你在setColor()中设置了前景色和背景色,然后你调用repaint(),系统得到一个图形对象并调用你的paint方法,然后你重新设置前景色和背景色。

您应该添加一个 init 方法来仅设置一次前台。

//only called on time by applet system
public void init() {
  setForeground ( vordergrundfarbe);
  setBackground ( hintergrundfarbe); 
}
//called everytime you call repaint()
public void paint( Graphics g)
{
  g.drawString("Hello World...",50,50); // Bildschirmausschrift erzeugen
}