Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中更改JComboBox的值_Java_Swing_Jcombobox_Actionlistener_Cardlayout - Fatal编程技术网

在Java中更改JComboBox的值

在Java中更改JComboBox的值,java,swing,jcombobox,actionlistener,cardlayout,Java,Swing,Jcombobox,Actionlistener,Cardlayout,我试图从ActionListener更改JComboBox的值,但运气不好 我有一个JComboBox,当更改时会更改CardLayout(切换到另一个GUI) 我有一个为用户提供选项的菜单栏,我想自动更改JComboBox selectedItem。本质上,我最终的愿望是让它在菜单栏上可以更改卡片布局(但我还没有能够接近使用ActionListener更改卡片布局) 代码似乎无法从内部侦听器类中找到JComboBox 任何帮助,包括我去阅读的参考资料,都将不胜感激 以下是我当前的代码(仍处于开

我试图从ActionListener更改JComboBox的值,但运气不好

我有一个JComboBox,当更改时会更改CardLayout(切换到另一个GUI)

我有一个为用户提供选项的菜单栏,我想自动更改JComboBox selectedItem。本质上,我最终的愿望是让它在菜单栏上可以更改卡片布局(但我还没有能够接近使用ActionListener更改卡片布局)

代码似乎无法从内部侦听器类中找到JComboBox

任何帮助,包括我去阅读的参考资料,都将不胜感激

以下是我当前的代码(仍处于开发阶段):

包装清单跟踪系统;
导入java.io.*;
导入java.net。*;
导入java.util.*;
导入java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.rmi.*;
公共类InventoryTrackingSystem实现ItemListener{
JPanel主面板;
JFrame框架;
JPanel cards;//使用CardLayout的面板
最终静态字符串MAINPANEL=“Main”;
最终静态字符串CHECKITEMSPANEL=“Check Items”;
最终静态字符串NEWITEMPANEL=“newitem”;
最终静态字符串CHECKOUTITEMPANEL=“checkoutitem”;
最终静态字符串ITEMINFOPANEL=“项目信息”;
JPanel ComboxPane;
私人JComboBox cb;
静态字符串comboBoxItems[]={MAINPANEL、CHECKITEMSPANEL、NEWITEMPANEL、CHECKOUTITEMPANEL、ITEMINFOPANEL};
公共静态void main(字符串[]args){
最终库存跟踪系统ITS=新库存跟踪系统();
/*使用合适的外观和感觉*/
试一试{
setLookAndFeel(“javax.swing.plaf.metal.MetalLookAndFeel”);
}捕获(无支持的LookandFeelexception ex){
例如printStackTrace();
}捕获(非法访问例外){
例如printStackTrace();
}catch(实例化异常){
例如printStackTrace();
}捕获(ClassNotFoundException ex){
例如printStackTrace();
}
/*关闭metal对粗体字体的使用*/
UIManager.put(“swing.boldMetal”,Boolean.FALSE);
//为事件分派线程计划作业:
//创建并显示此应用程序的GUI。
//javax.swing.SwingUtilities.invokeLater(新的Runnable(){
//公开募捐{
ITS.createAndShowGUI();
//      }
//    });
}
public void addComponentToPane(容器窗格){
//将JComboBox放入JPanel中,以获得更好的外观。
comboBoxPane=newJPanel();//使用FlowLayout
cb=新的JComboBox(comboBoxItems);
cb.setEditable(假);
cb.addItemListener(本);
comboBoxPane.add(cb);
//创建“卡片”。
JPanel main=new guiBuilder().buildGui(“main”);
JPanel checkItems=new guiBuilder().buildGui(“checkItems”);
JPanel newItems=newguibuilder().buildGui(“newItems”);
JPanel checkOutItems=new guiBuilder().buildGui(“checkOutItems”);
JPanel itemInfo=new guiBuilder().buildGui(“itemInfo”);
//创建包含“卡片”的面板。
cards=新的JPanel(新的CardLayout());
添加(主面板、主面板);
卡片。添加(checkItems,CHECKITEMSPANEL);
添加(newItems,NEWITEMPANEL);
添加(checkOutItems,CHECKOUTITEMPANEL);
添加(itemInfo、ITEMINFOPANEL);
添加(comboBoxPane,BorderLayout.PAGE_START);
添加(卡片、边框布局、中心);
}
公共无效itemStateChanged(ItemEvent evt){
CardLayout cl=(CardLayout)(cards.getLayout());
cl.show(cards,(String)evt.getItem());
}
/**
*创建GUI并显示它。为了线程安全,
*应该从
*事件调度线程。
*/
私有void createAndShowGUI(){
//创建并设置窗口。
frame=新JFrame(“库存跟踪系统”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
菜单m1=新菜单(“选项”);
MenuItem mi1_0=新MenuItem(“主页”);
mi1_0.setActionCommand(“主”);
mi1_0.addActionListener(新的menuListener());
菜单项mi1_1=新菜单项(“检查项”);
mi1_1.setActionCommand(“检查项”);
mi1_1.addActionListener(新的menuListener());
MenuItem mi1_2=新MenuItem(“添加新项目”);
mi1_2.setActionCommand(“addItem”);
mi1_2.addActionListener(新的menuListener());
MenuItem mi1_3=新MenuItem(“列出所有项目”);
mi1_3.setActionCommand(“列表项”);
mi1_3.addActionListener(新的menuListener());
菜单项mi1_4=新菜单项(“退出”);
mi1_4.setActionCommand(“退出”);
mi1_4.addActionListener(新的menuListener());
菜单m2=新菜单(“帮助”);
MenuItem mi2_0=新MenuItem(“关于”);
mi2_0.setActionCommand(“关于”);
mi2_0.addActionListener(新的menuListener());
m1.加上(mi1_0);
m1.添加(mi1_1);
m1.添加(mi1_2);
m1.添加(mi1_3);
m1.添加(mi1_4);
m2.添加(mi2_0);
菜单栏mb=新菜单栏();
帧设置菜单栏(mb);
mb.加上(m1);
mb.增加(m2);
//创建并设置内容窗格。
InventoryTrackingSystem setGUI=新的InventoryTrackingSystem();
setGUI.addComponentToPane(frame.getContentPane());
//显示窗口。
frame.pack();
frame.setVisible(true);
框架。设置尺寸(500500);
frame.addWindowListener(新的WindowAdapter(){
公共作废窗口关闭(WindowEvent we){
系统出口(0);
}
公共作废windowClosed(WindowEvent we){
系统出口(0);
}
});
}
类menuListener实现ActionListener{
已执行的公共无效操作(操作事件ev){
字符串thisAction=ev.getActionCommand();
if(thisAction.equals(“main”)){
cb.setSelectedItem(主面板);
}else if(thisAction.equals(“checkItem”)){
//更改GUI
}else if(thisAction.equals(“addItem”)){
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  at inventorytrackingsystem.InventoryTrackingSystem$menuListener.actionPerformed(InventoryTrackingSystem.java:161)
  at java.awt.MenuItem.processActionEvent(MenuItem.java:627)
  at java.awt.MenuItem.processEvent(MenuItem.java:586)
  at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:337)
  at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:325)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:646)
  at java.awt.EventQueue.access$000(EventQueue.java:84)
  at java.awt.EventQueue$1.run(EventQueue.java:602)
  at java.awt.EventQueue$1.run(EventQueue.java:600)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
  at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
  at java.awt.EventQueue$2.run(EventQueue.java:616)
  at java.awt.EventQueue$2.run(EventQueue.java:614)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 6 seconds)
if(thisAction.equals("main")){           
    cb.setSelectedItem(MAINPANEL);