Tôi đang triển khai một số mã bàn phím cho ứng dụng java swing hiện có, nhưng tôi dường như không thể nhấn phím để thực hiện hành động "mousePressed" và hành động "mouseReleased" được ánh xạ tới JButton. Tôi không có vấn đề gì khi nhấp vào nó cho "action_performed" với button.doClick(), có chức năng tương tự để mô phỏng các lần nhấn chuột không? Cảm ơn trước.Làm thế nào để bạn mô phỏng một cú nhấp chuột đầy đủ với Java Swing?
5
A
Trả lời
6
Bạn có thể mô phỏng ép chuột và hành động chuột bằng cách sử dụng các lớp Robot. Nó được tạo cho mô phỏng ví dụ: để tự động kiểm tra giao diện người dùng.
Nhưng nếu bạn muốn chia sẻ "hành động" cho ví dụ: các nút và nhấn phím, bạn nên sử dụng Action
. Xem How to Use Actions.
Ví dụ về cách chia sẻ một hành động cho một Button và một khi nhấn phím:
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);
Đọc thêm về Khóa-bindings trên How to Use Key Bindings.
2
Xem xét sử dụng Robot
để mô phỏng thao tác nhấn bàn phím và hoạt động của chuột.
2
Bạn có thể thêm một người biết lắng nghe để nút của bạn:
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();
}
});
}
}`
việc kiểm tra này http://stackoverflow.com/questions/2445105/how-do-you-simulate-a-click-on-a-jtextfield -equivalent-of-jbutton-doclick – doNotCheckMyBlog