下面的程序麻烦大家帮我改改下面的程序:package booktest;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;
public class clock {
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
clockframe cf = new clockframe("Title");
cf.setVisible(true);
cf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class clockframe extends JFrame implements ActionListener
{
final JTextField tf = new JTextField(10);
final JTextField tf1 = new JTextField(3);
final JTextField tf2 = new JTextField(3);
final JTextField tf3 = new JTextField(3);
clockframe(String str)
{
super(str);
setBounds(200, 100, 300, 200);
setLayout(new BorderLayout());
setBackground(Color.WHITE);
add("South",createSouthpanel());
add("Center",createCenterpanel());
}
JPanel createSouthpanel()
{
/**
 * 输入时间的块内容。
 */
JPanel panel =new JPanel();
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("输入时,分,秒");
panel.add(label);
panel.add(tf1);
panel.add(tf2);
panel.add(tf3);
return panel;
}
JPanel createCenterpanel()
{
JPanel panel =new JPanel();
panel.setLayout(new FlowLayout());
JButton jb = new JButton("开始计时");
tf.setEditable(false);
panel.add(tf);
panel.add(jb);
jb.addActionListener(this);
return panel;
}
@Override
public void actionPerformed(ActionEvent e) {
int Hour = Integer.valueOf(tf1.getText());
int Minute = Integer.valueOf(tf2.getText());
int Second = Integer.valueOf(tf3.getText());

thread t= new thread();
t.run(Hour,Minute,Second);
}
private class thread extends Thread
{
public void run(int h,int m,int s)
{
for( int i=0 ; i<1 ; i++)
{
for(int x=h;x<=24;x++)
for(int y=m;y<=60;y++)
for(int z=s;z<=60;z++)
{ /* try {
sleep(999);
} catch (InterruptedException e) {
e.printStackTrace();
}
                        */
x=x%24;y=y%60;z=z%60;
tf.setText(x+":"+y+":"+z);
}
}
}
}
}
程序思路是输入时分秒后,点击按钮开始计时。
注释段去掉之后会出现问题,还有就是程序里没有抛出输入输出的异常。

解决方案 »

  1.   


    package test;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.*;public class clock {
    public static void main(String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(true);
    clockframe cf = new clockframe("Title");
    cf.setVisible(true);
    cf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }class clockframe extends JFrame implements ActionListener {
    final JTextField tf = new JTextField(10); final JTextField tf1 = new JTextField(3); final JTextField tf2 = new JTextField(3); final JTextField tf3 = new JTextField(3); clockframe(String str) {
    super(str);
    setBounds(200, 100, 300, 200);
    setLayout(new BorderLayout());
    setBackground(Color.WHITE);
    add("South", createSouthpanel());
    add("Center", createCenterpanel());
    } JPanel createSouthpanel() {
    /**
     * 输入时间的块内容。
     */
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());
    JLabel label = new JLabel("输入时,分,秒");
    panel.add(label);
    panel.add(tf1);
    panel.add(tf2);
    panel.add(tf3);
    return panel;
    } JPanel createCenterpanel() {
    JPanel panel = new JPanel();
    panel.setLayout(new FlowLayout());
    JButton jb = new JButton("开始计时");
    tf.setEditable(false);
    panel.add(tf);
    panel.add(jb);
    jb.addActionListener(this);
    return panel;
    } // @Override
    public void actionPerformed(ActionEvent e) {
    int Hour = Integer.valueOf(tf1.getText());
    int Minute = Integer.valueOf(tf2.getText());
    int Second = Integer.valueOf(tf3.getText()); thread t = new thread(Hour,Minute,Second);
    t.start();
    //(Hour, Minute, Second);
    } private class thread extends Thread {
    private int h = 0;
    private int m = 0;
    private int s = 0;
    thread(int h, int m, int s){
    this.h = h;
    this.m = m;
    this.s = s;
    }
    public void run(){
    startToRun(h,m,s);
    }
    public void startToRun(int h, int m, int s) {
    for (int i = 0; i < 1; i++) {
    for (int x = h; x <= 24; x++)
    for (int y = m; y <= 60; y++)
    for (int z = s; z <= 60; z++) { try {
    sleep(999);
    } catch (InterruptedException e) {
    e.printStackTrace();
    } x = x % 24;
    y = y % 60;
    z = z % 60;
    tf.setText(x + ":" + y + ":" + z);
    }
    }
    }
    }
    }
      

  2.   

    LS正解,
    基础的只是,就是多了个线程类而已,LZ要多多加油