Java 如何在Swing中更新JComboBox实例?

Java 如何在Swing中更新JComboBox实例?,java,swing,jcombobox,itemlistener,comboboxmodel,Java,Swing,Jcombobox,Itemlistener,Comboboxmodel,我有3个组合框,在选择第一个组合框时,其余的应该更新,但我的代码似乎不起作用。请帮帮忙,伙计们。这是我的代码(因为我的代码很长,所以我只写错误部分) //示例代码 公共类GUI组件{ JComboxCombox1、Combox2、Combox3; 公共组件(){ ......... ......... 字符串[]element1={“item1”、“item2”、“item3”}; 字符串[]element2={“item1”,“item2”,item3}; 字符串[]element3={“it

我有3个组合框,在选择第一个组合框时,其余的应该更新,但我的代码似乎不起作用。请帮帮忙,伙计们。这是我的代码(因为我的代码很长,所以我只写错误部分)

//示例代码
公共类GUI组件{
JComboxCombox1、Combox2、Combox3;
公共组件(){
.........
.........
字符串[]element1={“item1”、“item2”、“item3”};
字符串[]element2={“item1”,“item2”,item3};
字符串[]element3={“item1”、“item2”、“item3”};
comboBox1.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
if(event.getStateChange()==ItemEvent.SELECTED){
//如何在选择combobox1时更新2个Combox1。
//combox2应更新为(element2)和
//combox3应更新为element3。
}
}
});
}  
}

提前感谢….

如果您打算在用户进行选择时更改组合框值,那么最好使用
ActionListener

如果要在用户每次选择下拉列表中的不同项目时更新组合框(是的,这是一个不同的事件),则应使用
itemstener

但无论哪种情况,过程都是一样的

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class ComboBoxUpdates {

    public static void main(String[] args) {
        new ComboBoxUpdates();
    }

    public ComboBoxUpdates() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JComboBox<String> cb1, cb2, cb3;

        public TestPane() {
            cb1 = new JComboBox<>(new String[]{"Click me", "Click me", "Click them"});
            cb2 = new JComboBox<>();
            cb3 = new JComboBox<>();
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            add(cb1, gbc);
            add(cb2, gbc);
            add(cb3, gbc);

            cb1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    cb2.setModel(new DefaultComboBoxModel<String>(new String[]{"item1", "item2", "item3"}));
                    cb3.setModel(new DefaultComboBoxModel<String>(new String[]{"item4", "item5", "item6"}));
                }
            });
        }    
    }
}
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.DefaultComboxModel;
导入javax.swing.JComboBox;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类ComboxUpdate{
公共静态void main(字符串[]args){
新的ComboxUpdates();
}
公共ComboxUpdate(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
私人JComboBox cb1、cb2、cb3;
公共测试窗格(){
cb1=newjcombobox(新字符串[]{“单击我”、“单击我”、“单击他们”});
cb2=新的JComboBox();
cb3=新的JComboBox();
setLayout(新的GridBagLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridwidth=GridBagConstraints.rements;
添加(cb1,gbc);
添加(cb2,gbc);
添加(cb3,gbc);
cb1.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
setModel(新的DefaultComboxModel(新字符串[]{“item1”、“item2”、“item3”});
setModel(新的DefaultComboxModel(新字符串[]{“item4”、“item5”、“item6”});
}
});
}    
}
}

“(因为我的代码很长,所以我只写错误部分)。”为了更快地获得更好的帮助,请发布一篇文章。“我的代码似乎不起作用”您尝试了什么?该代码段没有任何尝试,它的内容类似于“
//在这里完成我的工作,谢谢”
”。我需要在这里发布所有代码吗?@user1874936一个可运行的示例演示了这个问题……“我需要在这里发布所有代码吗?”SSCCE的第一个“S”代表什么?点击链接,阅读文章。一切都解释清楚了。@user1874936做出了一个改变:P
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class ComboBoxUpdates {

    public static void main(String[] args) {
        new ComboBoxUpdates();
    }

    public ComboBoxUpdates() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private JComboBox<String> cb1, cb2, cb3;

        public TestPane() {
            cb1 = new JComboBox<>(new String[]{"Click me", "Click me", "Click them"});
            cb2 = new JComboBox<>();
            cb3 = new JComboBox<>();
            setLayout(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            add(cb1, gbc);
            add(cb2, gbc);
            add(cb3, gbc);

            cb1.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    cb2.setModel(new DefaultComboBoxModel<String>(new String[]{"item1", "item2", "item3"}));
                    cb3.setModel(new DefaultComboBoxModel<String>(new String[]{"item4", "item5", "item6"}));
                }
            });
        }    
    }
}