gpt4 book ai didi

java - 更改另一个 JComboBox 后填充 JComboBox

转载 作者:行者123 更新时间:2023-12-02 12:58:54 26 4
gpt4 key购买 nike

我有课

    public class Speciality {
String specName;
String eduProgram; }

和 TreeMap Map<String, ArrayList<Speciality>> treeMap = new TreeMap<String, ArrayList<Speciality>>();其中 String 是教师姓名。

我的第一个 JComboBox 包含院系名称(因此它们等于我的 map 中的键)和我的 BoxActionListener 中的名称。我需要用 specNames 数组填充我的第二个 JComboBox 。

在这里你可以看到我真正需要的东西,但是 ofc 它没有文字(因为我将 String[] 转换为 String)

boxSpeciality.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i = 0; i < treeMap.size(); i++){
Object key = treeMap.keySet().toArray(new Object[treeMap.size()])[i];
ArrayList<Speciality> value = treeMap.get(key);


if(key == boxFaculty.getSelectedItem()){
boxSpeciality.setModel(new DefaultComboBoxModel((String[]) value.get(i).specName));
}
}
}
});

最佳答案

据我了解,您的组合框 boxFaculty显示 treeMap 的键这是教师姓名和您的组合框 boxSpeciality应显示每个学院的专业(这是 treeMap 的值之一)。

如果你想要boxSpeciality根据 boxFaculty 的选择进行填充,你应该写一个 actionListenerboxFaculty .

另一件事要注意的是不要设置新的 DefaultComboboxModel每次在 Action 监听器中。在定义组合框并在操作监听器中更新其元素时设置 1。

您可以执行如下操作:

DefaultComboBoxModel<Speciality> specialityModel = new DefaultComboBoxModel<Speciality>();
boxSpeciality.setModel( specialityModel );
boxFaculty.addActionListener( new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
Object obj = boxFaculty.getSelectedItem();
if ( obj != null )
{
ArrayList<Speciality> specialities = treeMap.get( obj );
specialityModel.removeAllElements();
for ( Speciality speciality : specialities )
{
specialityModel.addElement( speciality );
}
}

}

});

这将更新 boxSpeciality每次您在boxFaculty中选择一个项目时都会出现框.

关于java - 更改另一个 JComboBox 后填充 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44349264/

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