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

标签 java swing user-interface focus

我有一个 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/

相关文章:

java - I/O 从文件中读取对象数据

java - 以编程方式创建文件夹时媒体存储不工作

java - 我想计算Java中两点之间的距离

java - FileOutputStream 确实很慢

java - 我可以将引用的 JButton 添加到第二个 JPanel 吗?

java - JTree - 如何将背景设置为节点

swift - 是否可以在 SwiftUI 中使用带有自定义字体的动态字体大小?

iphone - 如何在呈现其他 View 时自动隐藏标签栏

java - 将文本换行到文本框中

java - 如何在java中将文件与程序相关联