java swing重置,操作后Java Swing重启计时器

I need my timer to restart or at least add another delay after a certain line of code is performed.

private static class ButtonHandler implements ActionListener {

public void actionPerformed (ActionEvent e) {

final JButton button = (JButton)e.getSource();

Timer timer = new Timer(1000, new ActionListener() {

public void actionPerformed(ActionEvent e) {

String tc = random();

them.setText("They chose: " + tc + "!");

if (button == rock) {

whoWins("rock", tc);

} else if (button == paper) {

whoWins("paper", tc);

} else if (button == scissors) {

whoWins("scissors", tc);

}

yourWins.setText("Your wins: " + yw);

theirWins.setText("Their wins: " + tw);

}

});

timer.setRepeats(false);

timer.start();

}

}

I would like to implement the second delay of the timer right after

them.setText("they chose: " + tc + "!");

yet I am not sure how to do this, am I supposed to restart the timer and if so where would I write that line of code? Thanks in advance.

解决方案

I was going to post this into your previous question, but it seems you've some progress, well done.

Okay, so, this example gives you three buttons to choose from. When you click one, it records what you choose, disables the buttons and starts a Timer which waits 1 second.

The Timer's ActionListener then checks to see what you choose and updates the output, then starts another Timer which waits 1 second, which then re-enables the buttons...

zHIPe.gif

import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.Timer;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

public class Chocies {

public static void main(String[] args) {

new Chocies();

}

public Chocies() {

EventQueue.invokeLater(new Runnable() {

@Override

public void run() {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {

}

JFrame frame = new JFrame("Testing");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

frame.add(new TestPane());

frame.pack();

frame.setLocationRelativeTo(null);

frame.setVisible(true);

}

});

}

public class TestPane extends JPanel {

private JButton choice1;

private JButton choice2;

private JButton choice3;

private JLabel output;

private JButton choice;

public TestPane() {

setLayout(new BorderLayout());

choice1 = new JButton("Door 1");

choice2 = new JButton("Door 2");

choice3 = new JButton("Door 3");

JPanel panel = new JPanel();

panel.add(choice1);

panel.add(choice2);

panel.add(choice3);

output = new JLabel("Pick a door");

output.setHorizontalAlignment(JLabel.CENTER);

add(output, BorderLayout.NORTH);

add(panel);

ButtonHandler handler = new ButtonHandler();

choice1.addActionListener(handler);

choice2.addActionListener(handler);

choice3.addActionListener(handler);

}

public class ButtonHandler implements ActionListener {

@Override

public void actionPerformed(ActionEvent e) {

output.setText("Wait for it...");

choice = (JButton) e.getSource();

choice1.setEnabled(false);

choice2.setEnabled(false);

choice3.setEnabled(false);

Timer timer = new Timer(1000, new TimerHandler());

timer.setRepeats(false);

timer.start();

}

}

public class TimerHandler implements ActionListener {

@Override

public void actionPerformed(ActionEvent e) {

if (choice1 == choice) {

output.setText("Door 1 selected");

} else if (choice2 == choice) {

output.setText("Door 2 selected");

} else if (choice3 == choice) {

output.setText("Door 3 selected");

}

Timer timer = new Timer(1000, new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

choice1.setEnabled(true);

choice2.setEnabled(true);

choice3.setEnabled(true);

}

});

timer.setRepeats(false);

timer.start();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值