gpt4 book ai didi

java - 将可点击的、触发 Action 的 JMenuItem 直接添加到 JMenuBar?

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:59 25 4
gpt4 key购买 nike

有没有办法将 JMenuItem(或类似的按钮类型对象)添加到 JMenuBar?

添加 JMenuItem 不适合 JMenuBar 的布局,而且按钮看起来太像按钮了。

我们应该调整按钮使其看起来像 JMenuItem 还是调整 JMenuBar 以正确显示 JMenuItem?还是别的东西?

最佳答案

以下代码实现了 camickr 的解决方案,尽管在看到 JMenuItemJMenuBar 中呈现的默认方式后,我会想出同样的事情。它看起来相当真实并且对点击有反应,但对助记符没有反应。

我尝试提供 JMenuItems 加速器(请参阅代码)并且它有效,但看起来真的很奇怪。

public class TheDude19 extends JFrame {

private class Action1 extends AbstractAction {
private Action1() {
super("Action1");
putValue(MNEMONIC_KEY, (int) '1');
// putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
}
public void actionPerformed(ActionEvent arg0) {
System.out.println("Action 1!");
}
}
private class Action2 extends AbstractAction {
private Action2() {
super("Action2");
putValue(MNEMONIC_KEY, (int) '2');
}
public void actionPerformed(ActionEvent arg0) {
System.out.println("Action 2!");
}
}
private class NarrowMenuItem extends JMenuItem {

public NarrowMenuItem(Action a) {
super(a);
}
public Dimension getMaximumSize() {
return new Dimension(super.getPreferredSize().width, super.getMaximumSize().height);
}
}
public TheDude19() {
JMenuItem menu1 = new NarrowMenuItem(new Action1());
JMenuItem menu2 = new NarrowMenuItem(new Action2());
JMenuBar mb = new JMenuBar();
mb.add(menu1);
mb.add(menu2);
add(mb, BorderLayout.NORTH);
setSize(400, 300);
}

public static void main(String[] args) {
(new TheDude19()).setVisible(true);
}

}

关于java - 将可点击的、触发 Action 的 JMenuItem 直接添加到 JMenuBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1862511/

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