解决方案 »

  1.   

    add一个监听,监听里添加两个方法,数据库查询的没有问题,线程的就用isAlive()方法判断是否活动的。没有经过测试,不过应该可行。
      

  2.   


    如果这个线程会修改Swing组件的状态,应该把那些处理放入:
    SwingUtilities.invokeLater(new Runnable(){
    @Override
    public void run() {
    }
    });如果是很耗时的处理,应该用new Thread().start()来处理;你既然定义了两个任务,就可以放在一个监听事件中,同时开启两个线程来运行;
      

  3.   

    楼上说的都对。
    添加两个监听实现两个事件的处理,但是你的应该是一个事件才对。只是调用两个方法而已比如
    mouseClicked(){
      连接数据库的方法();
      倒计时的方法
    }
      

  4.   


    你不需要两个倒计时的话就倒计时代码,保证只能有一个倒计时对象就好了button_1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    final Timer timer = new Timer();
    timer.schedule(new TimerTask() {
    private int count = 30;
    @Override
    public void run() {
    if(count > 0){
    lable.setText( "  "+String.valueOf(count--) + " 秒");
    }else{
    timer.cancel();
    lable.setText("时间到!");
    }
    }, 0, 1000);         
    }
    });
    以上是写好的代码,当我多次点击button_1按钮时,会出现多个倒计时一起运行,怎样改进才能使当我重新点击按钮时,上一个倒计时结束呢?谢谢啦!
      

  5.   


    timer好像有个取消倒计时的方法
      

  6.   


    timer好像有个取消倒计时的方法是什么啊,新手求指教啊,谢谢!
      

  7.   


    给你个示例, 自己看看:
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Timer;
    import java.util.TimerTask;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.SwingUtilities;public class TimerDemo { public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    new TimerDemo().new TimerFrame();
    }
    });
    } class TimerFrame extends JFrame{
    private static final long serialVersionUID = 281511492706800685L;
    JLabel label = null;
    JButton button = null;
    List<Timer> list = new ArrayList<Timer>();

    public TimerFrame(){
    JFrame frame = new JFrame();
    frame.setSize(300, 200);
    label = new JLabel();
    button = new JButton("开始计时");
    button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    final Timer timer = new Timer();

    for(Timer tim : list){
    tim.cancel();
    }
    list.clear();

    if(list.isEmpty()){
    list.add(timer);
    }

    timer.schedule(new TimerTask() {
    private int count = 30;
    @Override
    public void run() {
    if(count > 0){
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    label.setText( "  "+String.valueOf(count--) + " 秒");
    }
    });
    }else{
    timer.cancel();
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    label.setText("时间到!");
    }
    });
     }
      }}, 0, 1000);
    }
    });

    frame.getContentPane().add(label, BorderLayout.NORTH);
    frame.getContentPane().add(button, BorderLayout.SOUTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    }
    }
    }
      

  8.   


    给你个示例, 自己看看:
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Timer;
    import java.util.TimerTask;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.SwingUtilities;public class TimerDemo { public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    new TimerDemo().new TimerFrame();
    }
    });
    } class TimerFrame extends JFrame{
    private static final long serialVersionUID = 281511492706800685L;
    JLabel label = null;
    JButton button = null;
    List<Timer> list = new ArrayList<Timer>();

    public TimerFrame(){
    JFrame frame = new JFrame();
    frame.setSize(300, 200);
    label = new JLabel();
    button = new JButton("开始计时");
    button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    final Timer timer = new Timer();

    for(Timer tim : list){
    tim.cancel();
    }
    list.clear();

    if(list.isEmpty()){
    list.add(timer);
    }

    timer.schedule(new TimerTask() {
    private int count = 30;
    @Override
    public void run() {
    if(count > 0){
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    label.setText( "  "+String.valueOf(count--) + " 秒");
    }
    });
    }else{
    timer.cancel();
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    label.setText("时间到!");
    }
    });
     }
      }}, 0, 1000);
    }
    });

    frame.getContentPane().add(label, BorderLayout.NORTH);
    frame.getContentPane().add(button, BorderLayout.SOUTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    }
    }
    }
    给你个示例, 自己看看:
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Timer;
    import java.util.TimerTask;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.SwingUtilities;public class TimerDemo { public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    new TimerDemo().new TimerFrame();
    }
    });
    } class TimerFrame extends JFrame{
    private static final long serialVersionUID = 281511492706800685L;
    JLabel label = null;
    JButton button = null;
    List<Timer> list = new ArrayList<Timer>();

    public TimerFrame(){
    JFrame frame = new JFrame();
    frame.setSize(300, 200);
    label = new JLabel();
    button = new JButton("开始计时");
    button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    final Timer timer = new Timer();

    for(Timer tim : list){
    tim.cancel();
    }
    list.clear();

    if(list.isEmpty()){
    list.add(timer);
    }

    timer.schedule(new TimerTask() {
    private int count = 30;
    @Override
    public void run() {
    if(count > 0){
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    label.setText( "  "+String.valueOf(count--) + " 秒");
    }
    });
    }else{
    timer.cancel();
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
    label.setText("时间到!");
    }
    });
     }
      }}, 0, 1000);
    }
    });

    frame.getContentPane().add(label, BorderLayout.NORTH);
    frame.getContentPane().add(button, BorderLayout.SOUTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    }
    }
    }谢谢啦,就是要这种效果