gpt4 book ai didi

java - 如何让 jbutton 在另一个组件中执行键盘敲击

转载 作者:行者123 更新时间:2023-12-01 18:52:02 24 4
gpt4 key购买 nike

在我的 Java 应用程序中,我有一个带有一些按钮的 JFrame 和一个带有键盘快捷键的 COM 组件。当用户单击按钮时,我需要按钮来执行这些快捷方式。

例如:应单击打印按钮来执行 Ctrl + P

我该如何实现这个?

谢谢。

最佳答案

您可以使用Action和KeyBindings。看看这个例子:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;

public class TestKeyBinding {

private JFrame frame;

public final class PrintAction extends AbstractAction {

public PrintAction() {
super("Print");
}

@Override
public final void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, "Perform some printing");
}
}

protected void initUI() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
PrintAction printAction = new PrintAction();
JButton button = new JButton("Print");
button.registerKeyboardAction(printAction, KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK),
JComponent.WHEN_IN_FOCUSED_WINDOW);
button.setAction(printAction);
JComponent comp = new JComponent() {
@Override
public Dimension getPreferredSize() {
return new Dimension(100, 100);
}
};
frame.add(comp, BorderLayout.NORTH);
frame.add(button);
frame.setSize(300, 300);
frame.setVisible(true);
comp.requestFocusInWindow();
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestKeyBinding().initUI();
}
});
}
}

关于java - 如何让 jbutton 在另一个组件中执行键盘敲击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com