Как вы имитируете полный щелчок с Java Swing? - PullRequest
5 голосов
/ 11 декабря 2011

Я реализую некоторый код клавиатуры для существующего Java-приложения Swing, но я не могу получить нажатие на клавиатуре, чтобы выполнить действие «mousePressed» и «mouseReleased», которые сопоставлены с JButton.У меня нет проблем, щелкнув по кнопке «action_performed» с помощью button.doClick (), есть ли аналогичная функция для имитации нажатий мыши?Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 11 декабря 2011

Вы можете имитировать нажатия мыши и действия мыши с помощью класса Robot . Это сделано для моделирования например. для автоматического тестирования пользовательских интерфейсов.

Но если вы хотите поделиться "действиями", например, кнопки и нажатия клавиш, вы должны использовать Action. См. Как использовать действия .

Пример того, как поделиться действием для кнопки и нажатия клавиши:

Action myAction = new AbstractAction("Some action") {

    @Override
    public void actionPerformed(ActionEvent e) {
        // do something
    }
};

// use the action on a button
JButton myButton = new JButton(myAction);  

// use the same action for a keypress
myComponent.getInputMap().put(KeyStroke.getKeyStroke("F2"), "doSomething");
myComponent.getActionMap().put("doSomething", myAction);    

Подробнее о привязках клавиш см. Как использовать привязки клавиш .

2 голосов
/ 11 декабря 2011

Вы можете добавить слушателя к своей кнопке:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class ButtonAction {

private static void createAndShowGUI()  {

    JFrame frame1 = new JFrame("JAVA");
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JButton button = new JButton(" >> JavaProgrammingForums.com <<");
    //Add action listener to button
    button.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e)
    {
        //Execute when button is pressed
        System.out.println("You clicked the button");
        }
    });      

    frame1.getContentPane().add(button);
    frame1.pack();
    frame1.setVisible(true);
}


public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}`
2 голосов
/ 11 декабря 2011

Узнайте, как использовать Robot для имитации нажатия клавиш и действий мыши.

...