当前位置: 代码迷 >> Java相关 >> 求助,一个图形界面的小程序
  详细解决方案

求助,一个图形界面的小程序

热度:285   发布时间:2013-05-01 10:37:42.0
求助,一个图形界面的小程序
(设置时钟时间)编写一个程序,显示时钟时间并通过在三个文本域中输入小时,分钟,秒来设置时钟的时间

时钟显示不出来,哪边错啦?帮忙修改
程序代码:
[color=#0000FF]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
      
public class SetClockTime extends JFrame{
    int hour,minute,second;
  
  StillClock clock = new StillClock(hour,minute,second);
  
    JTextField jtf1 = new JTextField(5);
    JTextField jtf2 = new JTextField(5);
    JTextField jtf3 = new JTextField(5);
  
    public static void main(String[] args) {
        SetClockTime frame = new SetClockTime();
        frame.setTitle("indicate the time of the clock");
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,200);
        frame.setVisible(true);
     
    }
  
    public SetClockTime(){
      
   
  
        JPanel p1 = new JPanel();
        p1.setLayout(new FlowLayout(FlowLayout.CENTER));
        p1.add(new JLabel("Hour"));
        p1.add(jtf1);
        p1.add(new JLabel("Minute"));
        p1.add(jtf2);
        p1.add(new JLabel("Second"));
        p1.add(jtf3);
        add(p1,BorderLayout.SOUTH);
      
        add(clock,BorderLayout.NORTH);
      
        //register listenner
        jtf1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
           
               jtf1.requestFocusInWindow();   
            }   
        });
      
        jtf2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
            
               jtf2.requestFocusInWindow();   
            }   
        });
      
        jtf3.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
            
               jtf3.requestFocusInWindow();
            
              
            }   
        });
   
       addMouseListener(new MouseAdapter(){
            public void mousePressed(MouseEvent e){
            
               hour =Integer.parseInt(jtf1.getText());
               minute =Integer.parseInt(jtf2.getText());
               second =Integer.parseInt(jtf3.getText());
            }
    });
     
    }
}
class StillClock extends JPanel{
     private int hour;
     private int minute;
     private int second;
   
      public StillClock(int hour,int minute,int second){
          this.hour = hour;
          this.minute = minute;
          this.second = second;
         
      }
   
      public int getHour(){
          return hour;
      }
   
      public void setHour(int hour){
          this.hour = hour;
          repaint();
      }
   
      public int getMinute(){
          return minute;
      }
   
      public void setMinute(int minute){
          this.minute = minute;
          repaint();
      }
   
      public int getSecond(){
          return second;
      }
   
      public void setSecond(int second){
          this.second = second;
          repaint();
      }
   
      protected void paintComponent(Graphics g){
         super.paintComponent(g);
      
         int clockRadius = (int)(Math.min(getWidth(), getHeight())*0.8*0.5);
         int xCenter = getWidth()/2;
         int yCenter = getHeight()/2;
      
         g.setColor(Color.black);
         g.drawOval(xCenter - clockRadius,yCenter - clockRadius, 2*clockRadius,2*clockRadius);
         g.drawString("12",xCenter - 5, yCenter - clockRadius + 12);
         g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);
         g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);
         g.drawString("6", xCenter - 3, yCenter +clockRadius - 3);
      
      
         int sLength = (int)(clockRadius * 0.8);
         int xSecond = (int)(xCenter + sLength * Math.sin(second * (2 * Math.PI/60)));
         int ySecond = (int)(yCenter - sLength * Math.cos(second * (2 * Math.PI/60 )));
         g.setColor(Color.red);
         g.drawLine(xCenter,yCenter,xSecond,ySecond);
      
      
         int mLength = (int)(clockRadius *0.65);
         int xMinute = (int)(xCenter + mLength * Math.sin(minute*(2*Math.PI/60)) );
         int yMinute = (int)(yCenter - mLength * Math.cos(minute*(2*Math.PI/60)) );
         g.setColor(Color.blue);
         g.drawLine(xCenter,yCenter,xMinute,yMinute);
      
      
         int hLength = (int)(clockRadius * 0.5);
         int xHour = (int)(xCenter +hLength * Math.sin((hour %12 + minute/60.0)*(2*Math.PI/12)));
         int yHour = (int)(yCenter -hLength * Math.cos((hour %12 + minute/60.0)*(2*Math.PI/12)));
         g.setColor(Color.green);
         g.drawLine(xCenter,yCenter, xHour, yHour);
     }
}
下。
[/color]
搜索更多相关的解决方案: 时间  时钟  second  minute  

----------------解决方案--------------------------------------------------------
JPanel 没有加入到JFrame 里,如何显示?加一句 frame.add(p1);
----------------解决方案--------------------------------------------------------
楼上正解


----------------解决方案--------------------------------------------------------
2楼正解 frame.add(clock);
----------------解决方案--------------------------------------------------------