因此,如果我們看看這個片段中......
long buttn_last_pressed = System.currentTimeMillis();
line.setText("A");
if ((System.currentTimeMillis() - buttn_last_pressed) <= 2000) {
除非line.setText("A");
真的,真的很慢,這是不太可能需要2秒到達if
聲明...
你的意思更多的東西一樣......
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class JavaApplication787 {
public static void main(String[] args) {
new JavaApplication787();
}
public JavaApplication787() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JTextField field;
public TestPane() {
setLayout(new GridBagLayout());
JButton btn = new JButton("1 ABC");
btn.addActionListener(new ActionListener() {
private long lastClick = -1;
private int count;
private String[] value = {"1", "A", "B", "C"};
@Override
public void actionPerformed(ActionEvent e) {
long now = System.currentTimeMillis();
if (now - lastClick < 2000) {
count++;
if (count >= value.length) {
count = 0;
}
} else {
count = 0;
}
field.setText(value[count]);
lastClick = System.currentTimeMillis();
}
});
field = new JTextField(4);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(btn, gbc);
add(field, gbc);
}
}
}
好吧,所有這些都是檢查最後一次點擊時間之間的差異,如果它小於2秒,它會更新count
,指示要使用的當前值,否則將count
重置爲0
,默認值爲回到正常的鑰匙...
btn.addActionListener(new ActionListener() {
private long lastClick = -1;
private int count;
private String[] value = {"1", "A", "B", "C"};
@Override
public void actionPerformed(ActionEvent e) {
long now = System.currentTimeMillis();
if (now - lastClick < 2000) {
count++;
if (count >= value.length) {
count = 0;
}
} else {
count = 0;
}
field.setText(value[count]);
lastClick = System.currentTimeMillis();
}
});
啊好吧好吧,我現在完全得到它 - 這樣一個愚蠢的錯誤,我做了!..是的,這正是我想要做的,你是一個明星,非常感謝你! :) – MET 2015-02-12 16:48:44
但我不gey爲什麼lastClick發起到-1,它會工作相同,如果不是,對不對? – MET 2015-02-12 16:54:32
這是個人的事情,我傾向於將其設置爲-1,所以我可以檢查它是否設置,在這不是必需的 – MadProgrammer 2015-02-12 20:04:07