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

Vig*_*ale 3 java swing keyevent keylistener actionlistener

我想呼吁actionPerformed()正常的方法类的.我知道只要按下按钮就会自动执行.但是我想在特定文本字段上按下ENTER按钮时调用该方法.是否有可能调用actionPerformed()keyPressed()或正常功能/方法.

以下代码将让您粗略了解我想要做什么.

void myFunction()
{
      actionPerformed(ActionEvent ae);
}

public void actionPerformed(ActionEvent ae)
{
      //my code
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

nIc*_*cOw 5

如果你想要的话,在按里面执行actionPerformed()a的某个方法,那么我猜你可以使用doClick()方法来实现这一点.虽然这种做法,可能可以覆盖的原始行为上的按键:(JButtonENTERJTextFieldAbstractButtonJTextFieldENTER

请看下面粘贴的代码,看看这是什么,适合您的需求:-) !!!

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();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1 表示 `doClick()`,也可以在 [此处](http://stackoverflow.com/a/5797965/230513) 中看到键绑定。 (2认同)