Java SerialVersionId警告:打印到屏幕时出现问题

Java SerialVersionId警告:打印到屏幕时出现问题,java,applet,Java,Applet,我开始学习java并完成教程,但在尝试制作数字时钟动画时遇到了一个问题。代码是: import java.awt.Graphics; import java.awt.Font; import java.util.Date; public class DigitalClock extends java.applet.Applet { Font theFont = new Font("Helvetica",Font.BOLD,24); Date theDate; public vo

我开始学习java并完成教程,但在尝试制作数字时钟动画时遇到了一个问题。代码是:

import java.awt.Graphics;
import java.awt.Font;
import java.util.Date;

public class DigitalClock extends java.applet.Applet {

  Font theFont = new Font("Helvetica",Font.BOLD,24);
  Date theDate;

  public void start() {
    while (true) {
      theDate = new Date();
      repaint();
      try {Thread.sleep(1000); }
      catch (InterruptedException e) { }
    }
  }

  public void paint(Graphics g) {

    g.setFont(theFont);
    g.drawString(theDate.toString(),10,50);
  }
}
我正在使用以下方式查看小程序:

<HTML>
<HEAD>
<TITLE>This page has an applet on it</TITLE>
</HEAD>
<BODY>
<P>Digital Clock:
<BR>
<APPLET CODE = "DigitalClock.class" WIDTH=300 HEIGHT=100>
</APPLET>
</BODY>
</HTML>
动画根本不会出现(小程序打开,但窗口中没有任何内容)。我假设这与警告有关,虽然从一些研究中,我假设这意味着类没有被正确调用,但我不明白为什么会这样

请注意:这是我在java工作的第一周,我非常基础

提前感谢您提供的任何建议

添加行:

private static final long serialVersionUID = 1L;

在所有人面前。这应该可以消除警告

警告可以忽略,这不是小程序无法可视化的原因。要解决此警告,请包括以下内容:

private static final long serialversionUID = 1L; 
目前并非所有浏览器都支持applet标记,请检查,因此请确保使用兼容的标记。在宽度和高度值中也加上引号,如下所示:

<APPLET CODE = "DigitalClock.class" WIDTH="300" HEIGHT="100">

这里有两个不同的问题

第一个是您的警告:它告诉您没有
serialVersionUID
,如果您想通过互联网络传输类的实例,它只是一个ID。将这一行添加到课程的开头,这一行应该会消失:

 private static final long serialVersionUID = 1L;
你的第二个问题是,你使用的标签在Chrome中不受支持,在HTML5中也不是标准的,这意味着它很快就会消失。尝试改用

另一个可能导致它无法显示的原因是,在
start()
方法中有
while(true)
。虽然我不熟悉这些东西是如何工作的,但您可能希望将其移动到中的一个单独的方法中,这样它就不会阻止
start()
方法的完成,而这反过来又会阻止它进行渲染


另外,更好的做法是将更新时间的方法与渲染分开,因为如果渲染延迟,您不希望在恢复之前停止计算时间。即使渲染停止几分钟,您的时钟也应该是准确的,因为时钟就是这样工作的。

警告不是您的问题。我对小程序不太熟悉,但我猜您的问题是
while(true)
中的
start()
方法。您需要一些后台工作人员来更新时间。对于OP:如果下面的任何答案有帮助,请接受它们。嗯,这会给我一个不同的错误,但这也会导致小程序无法绘制到屏幕上的问题吗?请尝试在绘制方法之前添加@Override注释。它是否给出了一个错误,表示它不能被重写?
 private static final long serialVersionUID = 1L;