我正在尝试在类的普通方法 中调用 actionPerformed()
。我知道只要按下按钮,它就会自动执行。但是我想在特定的 textfield 上按下 ENTER 按钮时调用该方法。是否可以在 keyPressed()
或普通函数/方法中调用 actionPerformed()
。
下面的代码会让你大概知道我想做什么。
void myFunction()
{
actionPerformed(ActionEvent ae);
}
public void actionPerformed(ActionEvent ae)
{
//my code
}
提前致谢
最佳答案
如果你愿意,一些actionPerformed()
JButton
的方法在 JTextField
中按 ENTER 执行, 那么我想你可以使用 doClick() , 方法来自 AbstractButton
类来实现这一点。通过这种方法,可能会覆盖 JTextField
的原始行为。按 ENTER 键 :(
请查看下面粘贴的代码,看看这是否符合您的需求:-) !!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonClickExample
{
private JTextField tfield;
private JButton button;
private JLabel label;
private ActionListener actions = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource() == button)
{
label.setText(tfield.getText());
}
else if (ae.getSource() == tfield)
{
button.doClick();
}
}
};
private void displayGUI()
{
JFrame frame = new JFrame("Button Click Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(5, 5));
JPanel centerPanel = new JPanel();
tfield = new JTextField("", 10);
button = new JButton("Click Me or not, YOUR WISH");
tfield.addActionListener(actions);
button.addActionListener(actions);
centerPanel.add(tfield);
centerPanel.add(button);
contentPane.add(centerPanel, BorderLayout.CENTER);
label = new JLabel("Nothing to show yet", JLabel.CENTER);
contentPane.add(label, BorderLayout.PAGE_END);
frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
new ButtonClickExample().displayGUI();
}
});
}
}
关于java - 使用类的普通方法调用 actionPerformed 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250669/