gpt4 book ai didi

java - 如何将焦点设置在JMenu上?

转载 作者:行者123 更新时间:2023-11-30 03:03:33 25 4
gpt4 key购买 nike

我有一个 JFrame,其中包含 JMenuBar 和 JMenus。当我运行框架时,我希望在 JMenu 中设置焦点,因此当我点击 space 按钮时,它将显示其菜单项。

这些都不起作用

mnNewMenu_1.requestFocus();
mnNewMenu_1.grabFocus();
mnNewMenu_1.requestFocusInWindow();

如何在应用程序运行时将默认焦点设置在 JMenu 上?

以下是来源:

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JButton;

@SuppressWarnings("serial")
public class GUIsds extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
GUIsds frame = new GUIsds();
frame.setVisible(true);
}
});
}

/**
* Create the frame.
*/
public GUIsds() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);

JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);

JMenu mnNewMenu = new JMenu("New menu");
menuBar.add(mnNewMenu);

JMenuItem mntmNewMenuItem = new JMenuItem("New menu item");
mnNewMenu.add(mntmNewMenuItem);

JMenu mnNewMenu_1 = new JMenu("New menu2");
menuBar.add(mnNewMenu_1);

JMenuItem mntmNewMenuItem_1 = new JMenuItem("New menu item2");
mnNewMenu_1.add(mntmNewMenuItem_1);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

JButton btnNewButton = new JButton("New button");
contentPane.add(btnNewButton, BorderLayout.SOUTH);
}
}

最佳答案

在尝试显示菜单之前,您需要确保框架可见。所以你可以尝试这样的事情:

SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
mnNewMenu_1.doClilck();
}
});

关于java - 如何将焦点设置在JMenu上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35365710/

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