我正在使用計數器根據按鈕單擊次數插入數字。只涉及一個按鈕。當該按鈕被按下一次時,它應該在文本字段中輸入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