奇怪了:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;/**
 * This program demonstrates the use of inner classes.
 * @version 1.10 2004-02-27
 * @author Cay Horstmann
 */
public class InnerClassTest
{
   public static void main(String[] args)
   {
// keep program running until user selects "Ok"    TalkingClock clock = new TalkingClock(1000, true);
   clock.start();
       
 //JOptionPane.showMessageDialog(null, "Quit program?");
   JOptionPane.showMessageDialog(null, "Quit program?");
   System.exit(0);
   }   
      
}/**
 * A clock that prints the time in regular intervals.
 */
class TalkingClock
{
   /**
    * Constructs a talking clock
    * @param interval the interval between messages (in milliseconds)
    * @param beep true if the clock should beep
    */
   public TalkingClock(int interval, boolean beep)
   {
      this.interval = interval;
      this.beep = beep;
   }   /**
    * Starts the clock.
    */
   public void start()
   {
      ActionListener listener = new TimePrinter();
      Timer t = new Timer(interval, listener);
      t.start();
   }   private int interval;
   private boolean beep;   public class TimePrinter implements ActionListener
   {
  public void actionPerformed(ActionEvent event)
      {
         Date now = new Date();
         System.out.println("At the tone, the time 。。is " + now);
         if (beep) Toolkit.getDefaultToolkit().beep();
      }
   }
}
当我在在class TalkingClock前面加上public时,总有The public type TalkingClock must be defined in its own file错误,这是为什么呢?大家帮忙看一下,可以在机子上运行一下看看,不知是否是我设置问题。

解决方案 »

  1.   

    一个源文件中只允许有一个public 类,非public 类可以有若干个。
      

  2.   

    将想要声明为public 的类分别放到不同的源文件中即可。
      

  3.   

    如果改成public class TalkingClock,文件名必须改成TalkingClock.java,且必须保证文件中只此类是public型的
      

  4.   

    一个源文件中只允许有一个public 类
    常识要记得