求助,一个图形界面的小程序
(设置时钟时间)编写一个程序,显示时钟时间并通过在三个文本域中输入小时,分钟,秒来设置时钟的时间时钟显示不出来,哪边错啦?帮忙修改
程序代码:
[color=#0000FF]importjava.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]