我正在使用计数器根据按钮单击次数插入数字。只涉及一个按钮。当该按钮被按下一次时,它应该在文本字段中输入1。如果在3秒内再次按下该按钮,则应将1替换为2.如果在3秒后按下该按钮,则应以相同的方式输入下一个数字。我在下面添加了我的代码。使用相同的按钮在文本框中输入不同的文本
我在这个程序中遇到了一些麻烦。当我在3秒内按下按钮两次时,它会在JTextField中输入“12”。在输入一位数字后,我也无法重置计数器。希望您理解我的问题。
package timertry;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class TimerTry extends JFrame implements ActionListener{
public JFrame panel1;
JTextField tf;
JButton button;
int counter=0;
public TimerTry() {
panel1=new JFrame("Single button keypad try");
panel1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
tf=new JTextField();
tf.setEnabled(false);
tf.setHorizontalAlignment(JTextField.CENTER);
button=new JButton();
}
public void launchFrame(){
panel1.setLayout(null);
panel1.setVisible(true);
panel1.setExtendedState(JFrame.MAXIMIZED_BOTH);
panel1.add(tf);
tf.setSize(300, 50);
tf.setLocation(500, 150);
tf.setEnabled(false);
tf.setHorizontalAlignment(JTextField.CENTER);
panel1.add(button);
button.setSize(360,50);
button.setLocation(900, 250);
button.setLabel("Press");
button.setHorizontalAlignment(JTextField.CENTER);
button.addActionListener(this);
}
public static void main(String[] args) {
// TODO code application logic here
TimerTry tt=new TimerTry();
tt.launchFrame();
}
@Override
public void actionPerformed(ActionEvent e) {
Thread thread=new Thread(){
@Override
public void run(){
try{
sleep(3000);
counter++;
if(counter==1){
tf.setText(tf.getText()+counter);
}
else if(counter==2){
tf.setText(tf.getText()+counter);
}
else if(counter==3){
tf.setText(tf.getText()+counter);
}
else {
tf.setText(tf.getText()+counter);
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
};
thread.start();
}
}
保鲜膜别你的逻辑在一个线程内,每当你按下一个按钮,你就开始一个全新的独立线程 – MadProgrammer 2014-08-29 20:37:30