我想知道 java 中是否有内置函数或检查 JButton 是否连续单击两次的方法。不要将其与跟踪 JButton 被单击或双击 JButton 的次数相混淆。我搜索了多个线程,它们似乎都在谈论后者。
如果单击一次名为 button1
的按钮,我有以下代码。我需要一些帮助来调整它,以便在单击按钮两次(即背靠背)时工作。
public void actionPerformed(ActionEvent arg0){
JButton button1 = (JButton) arg0.getSource();
if (button1 == button1) {
//You clicked button1 twice in a row
}
}
最佳答案
更多上下文会很好,但是您可以轻松地找到一种方法来跟踪按下了哪些按钮,存储您需要的信息(最后按下按钮的实例、按下次数的计数器或包含最后事件的数组) ...)。像这样的东西:
private JButton _lastButtonPressed;
void actionPerformed(ActionEvent event)
{
JButton buttonPressed = (JButton) event.getSource();
if (_lastButtonPressed == buttonPressed)
{
//The same button was clicked two+ times in a row
}
else
{
//code for handling single button presses
}
_lastButtonPressed = buttonPressed;
}
更新
这是一个使用上面代码的简单可执行程序。 actionListener 能够知道按钮连续被按下了多少次。
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
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.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public class ButtonTestFrame implements ActionListener
{
public static final void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new ButtonTestFrame();
}
});
}
public ButtonTestFrame()
{
_frame = new JFrame();
_frame.setTitle("Button test frame");
_textArea = new JTextArea("Press some buttons:\n");
_textArea.setEditable(false);
_frame.add(new JScrollPane(_textArea));
JPanel buttonsPanel = new JPanel(new GridLayout(1, 3, 1, 1));
_buttonA = new JButton("Button A");
_buttonA.addActionListener(this);
_buttonB = new JButton("Button B");
_buttonB.addActionListener(this);
_buttonC = new JButton("Button C");
_buttonC.addActionListener(this);
buttonsPanel.add(_buttonA);
buttonsPanel.add(_buttonB);
buttonsPanel.add(_buttonC);
_frame.add(buttonsPanel, BorderLayout.SOUTH);
_frame.setPreferredSize(new Dimension(600,400));
_frame.pack();
_frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
_frame.setLocationByPlatform(true);
_frame.setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
JButton buttonPressed = (JButton) event.getSource();
if (_lastButtonPressed == buttonPressed)
{
//The same button was clicked two+ times in a row
count++;
_textArea.append(buttonPressed.getText() + " has been pressed " + count + " times in a row.\n");
}
else
{
//code for handling single button presses
count = 1;
_textArea.append(buttonPressed.getText() + " has been pressed.\n");
}
_lastButtonPressed = buttonPressed;
}
private int count = 0;
private JButton _lastButtonPressed;
private JButton _buttonA;
private JButton _buttonB;
private JButton _buttonC;
private JTextArea _textArea;
private JFrame _frame;
}
结果:
关于java - 连续单击 JButton 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497120/