java - 使用类的普通方法调用 actionPerformed 方法

标签 java swing actionlistener keylistener keyevent

我正在尝试在类的普通方法调用 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/

相关文章:

java - Java中如何读取二进制32位定点数

java - 在绘制背景上的 JPanel 中使用 JButton、JLabels 和 JTextField

java - "AWT-EventQueue-0"java.lang.NullPointerException 异常

java - 制作更改程序GUI

java - JDialog 状态的 Action 监听器

java - 使用 shibboleth sso 进行授权

java - QuerySyntaxException : expecting CLOSE, 发现 '.'

java - 如何从单击按钮的代码中进行调用?

Java读取二进制记录到String中

java - 保存数据并创建一个不包含该数据的新面板