请完成下面的程序:实现一个可以每秒跳动的时钟。运行如下图所示。请填写横线处的内容。 注意:请勿改动main主方法和其他已有语句内容,仅在下划线处填入适当的语句。 import javax.swing.*; import java.awt.

admin2009-01-15  48

问题 请完成下面的程序:实现一个可以每秒跳动的时钟。运行如下图所示。请填写横线处的内容。
   注意:请勿改动main主方法和其他已有语句内容,仅在下划线处填入适当的语句。
   import javax.swing.*;
   import java.awt.*;
   import java.awt.event.*;
                                          
   import java.util.*;
   public class Example2_12 extends JFrame  (1)  implements Runnable
   {
       Thread thread1;
       Color handColor;
       Color numberColor;
       JLabel jlabell = new JLabel();
       public Example2_12()
       {
           enableEvents(AWTEvent.WINDOW_EVENT_MASK);
           try
           {
               getContentPane().add(jlabell, BorderLayout. SOUTH);
           }
           catch (Exception e)
           {
               System.out.println(e.getMessage());
           }
       }
       public static void main(String args[])
       {
           Example2 12_clock1 = new Example2_12();
           clock1.init();
           clock1.start();
           clock1.setSize(260, 230);
           clock1.setResizable(false);
           clock1.show();
       }
       public void init()
       {
           int x,  y;
           handColor = Color.blue;
           numberColor = Color.darkGray;
           setBackground(Color.white);
       }
       public void paint (Graphics g)
       {
       int xh,  yh,  xm,  ym,  xs,  ys,  s = 0, m = 10, h = 10,  xpoint,  ypoint;
       String today;
       Calendar c1 = ______;
       s = c1.get(Calendar.SECOND);
       m = c1.get(Calendar.MINUTE);
       h = c1.get(Calendar.HOUR);
       int day, month, year, weekday;
       day = c1.get(Calendar.DATE);
       month = c1.get(Calendar.MONTH) + 1;
       year = c1. get (Calendar. YEAR);
       weekday = c1.get (Calendar. DAY_OF_WEEK);
       jlabell.setText("Today is "+ year + "/" + month + "/" + day + "/   "+ "Time:" + h + ":" + m + ":" + s);
       xpoint = 130;
       ypoint = 100;
       xs =(int)  (Math.cos(s * 3.14f / 30 - 3.14f / 2)  * 45 + xpoint);
       ys =(int)  (Math.sin(s * 3.14f / 30 - 3.14f / 2) * 45 + ypoint);
       xm =(int)  (Math.cos (m * 3.14f / 30 - 3.14f / 2)  * 40 + xpoint);
       ym =(int)  (Math.sin(m * 3.14f / 30 - 3.14f / 2)  * 40 + ypoint);
       xh =(int)  (Math.cos( (h * 30 + m / 2)  * 3.14f / 180 - 3.14f / 2)  * 30 + xpoint);
       yh =(int)  (Math.sin( (h * 30 + m / 2)  * 3.14f / 180 - 3.14f / 2)  * 30 + ypoint);
       g.setColor (handColor);
       g.clearRect(0, 0, 260, 200);
       g.drawOval(xpoint / 2 + 10, ypoint / 2 - 5, 110, 110);
       g.setColor(numberColor);
       g.drawString("9", xpoint - 45, ypoint + 3);
       g.drawString("3", xpoint + 40, ypoint + 3);
       g.drawString("12", xpoint - 5, ypoint - 37);
       g.drawString("6", xpoint - 3, ypoint + 45);
       g.setColor(getBackground ( ) );
       g.setColor(numberColor);
       g.drawString(" ", 5, 125);
       g.drawLine(xpoint, ypoint, xs, ys);
       g.setColor(handColor);
       g.drawLine(xpoint, ypoint, xm, ym);
       g.drawLine(xpoint, ypoint, xh, xh);
       }
       public void start()
       {
           thread1 = new Thread(this);
           thread1. ______;
       }
       public void stop ()
       {
           thread1=null;
       }
       public void update (Graphics g)
       {
           paint (g);
       }
       public void run ()
       {
           Thread me = Thread. currentThread ();
           while (thread1 == me)
           {
               try
               {
               Thread. currentThread ( ) . sleep ( 100 );
               }
                catch (InterruptedException e)
               {
               e.printStackTrace();
               }
               repaint ( );
           }
       }
       protected void processWindowEvent(WindowEvent e)
       {
           super.processWindowEvent(e);
           if (e.getID() == WindowEvent.WINDOW_CLOSING)
               System.exit(0);
       }
   }

选项

答案①Calendar.getInstance() ②start()

解析 本题主要考查线程和日历类的知识。在图形程序处理中,经常会用到多线程。使用多线程的类必须实现Runnable,接口,Thread类已经实现了Runnable接口,其子类自动实现了此类。要开始一个线程,应调用该类的start方法(第2个空)。这时Java会自动开始在该线程中调用该类的run方法。另外,在Java中,有的类只能有一个实例,不能创建它的多个实例对象。这在设计模式中叫做Singleton(单例)模式。Calendar类就是这样的类,它只能通过 getInstance方法得到这个实例对象(第1个空)。
转载请注明原文地址:https://kaotiyun.com/show/Z1np777K
0

最新回复(0)