gpt4 book ai didi

java - 将 JMenuItem 添加到多个菜单

转载 作者:行者123 更新时间:2023-12-01 16:34:55 25 4
gpt4 key购买 nike

我希望将相同的 JMenuItem 添加到多个 JMenu,但它只显示在最后一个 JMenu 中。这是我编写的代码。我希望为所有 JMenu 状态显示三个 JMenu 项。使用此代码,前两个状态没有 JMenuItems,所有三个状态都只有最后一个。

import javax.swing.*;
import java.awt.event.*;
public class Menu extends JFrame{
public Menu()
{
super("Funky Menu");
JMenu [] states = new JMenu [3];
JMenuItem [] items = new JMenuItem [3];
//Initializing the items
items[0] = new JMenuItem("Industries");
items[0].setMnemonic('I');
items[1] = new JMenuItem("Hill Stations");
items[1].setMnemonic('H');
items[2] = new JMenuItem("Top Institutions");
items[2].setMnemonic('T');
//Initializing the states
//I've set the adjacent keys as the Mnemonics for easy user interaction
//though it is less intuitive, it can vary on the user preference.
states[0] = new JMenu("Tamil Nadu"); states[0].setMnemonic('Q');
states[1] = new JMenu("West Bengal"); states[1].setMnemonic('W');
states[2] = new JMenu("Haryana"); states[2].setMnemonic('E');
//Adding all the items to each of the states
for(int i=0; i<3; ++i)
{
for(int j=0; j<3; ++j)
{
states[i].add(items[j]);
}
}
//adding action listener to menu items
for(int j=0; j<3; ++j)
{
items[j].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt)
{
//The next few lines could be clubbed together in one but for
//clarity sake I write them seperately
JMenuItem currentItem = (JMenuItem) evt.getSource();
String textToDisplay = currentItem.getText();
System.out.println(textToDisplay + " : located in ...");
//one liner : System.out.println(((JMenuItem) evt.getSource()).getText() + " : located in ...");
}
});
}
//finally to fix up the MenuBar
JMenuBar bar = new JMenuBar();
setJMenuBar(bar);
for(int i=0; i<3; ++i)
{
bar.add(states[i]);
}
getContentPane();
//TODO Create a JLabel add it to the contents
//Instead of writing to the console, update the frames text
setSize(500, 500);
setVisible(true);
}

public static void main(String[] args)
{
Menu app = new Menu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

最佳答案

我没有检查你的代码,但一个组件只能有一个父组件。您需要创建单独的菜单项(可能使用相同的 Action 对象)。

关于java - 将 JMenuItem 添加到多个菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195323/

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