当通过选择组合框中的项目执行操作时,Jlist 不会更新
Jlist is not getting updated when an action performed by selecting an item in Combobox
我正在尝试通过在 Combobox 中选择一个值来执行操作,选择后,应根据所选值更新 Jlist。但是列表只是第一次取值,但在更改值时它没有得到更新。然而,值即将到来并执行操作,因为我可以看到值正在进入 consol.My 代码如下:
ArrayList< String> ModuleNames = GetModuleNames();
String[] ModuleNames1 = ModuleNames.toArray(new String[ModuleNames.size()]);
comboModuleName = new JComboBox(ModuleNames1);
comboModuleName.setEditable(true);
comboModuleName.setSelectedItem(null);
comboModuleName.setBounds(280,80,350,40);
panel.add(comboModuleName);
comboModuleName.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent e) {
String currentSelectedValue = comboModuleName.getSelectedItem().toString();
System.out.println("selected value is "+currentSelectedValue);
try
{ //collecting values from a function and want to populate in the list,currentSelectedValue
//currentSelectedValue is the value selected in the combobox based on this value function //returns some values as a arraylist
ArrayList CurrentModuleFunctions = getFunctionAndParametereNames(currentSelectedValue);
Vector reflectedValues = new Vector();
for (int i = 0; i < CurrentModuleFunctions.size(); i++) {
reflectedValues.addElement(CurrentModuleFunctions.get(i));
}
if(e.getSource() == comboModuleName) {
listFunctionNames = new JList(reflectedValues);
listFunctionNames.setBounds(280,140,350,140);
panel.add(listFunctionNames);
}
}
catch (ClassNotFoundException | IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
我不确定为什么 Jlist 没有更新,因为我可以在组合框中选择新值时获取值。
不是在 actionPerformed() 方法内部创建 JList,而是在外部创建它
listFunctionNames = new JList();
listFunctionNames.setBounds(280,140,350,140);
panel.add(listFunctionNames);
在 actionPerformed() 中,只需设置值
listFunctionNames.setListData(reflectedValues);
我正在尝试通过在 Combobox 中选择一个值来执行操作,选择后,应根据所选值更新 Jlist。但是列表只是第一次取值,但在更改值时它没有得到更新。然而,值即将到来并执行操作,因为我可以看到值正在进入 consol.My 代码如下:
ArrayList< String> ModuleNames = GetModuleNames();
String[] ModuleNames1 = ModuleNames.toArray(new String[ModuleNames.size()]);
comboModuleName = new JComboBox(ModuleNames1);
comboModuleName.setEditable(true);
comboModuleName.setSelectedItem(null);
comboModuleName.setBounds(280,80,350,40);
panel.add(comboModuleName);
comboModuleName.addActionListener(new ActionListener() {
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(ActionEvent e) {
String currentSelectedValue = comboModuleName.getSelectedItem().toString();
System.out.println("selected value is "+currentSelectedValue);
try
{ //collecting values from a function and want to populate in the list,currentSelectedValue
//currentSelectedValue is the value selected in the combobox based on this value function //returns some values as a arraylist
ArrayList CurrentModuleFunctions = getFunctionAndParametereNames(currentSelectedValue);
Vector reflectedValues = new Vector();
for (int i = 0; i < CurrentModuleFunctions.size(); i++) {
reflectedValues.addElement(CurrentModuleFunctions.get(i));
}
if(e.getSource() == comboModuleName) {
listFunctionNames = new JList(reflectedValues);
listFunctionNames.setBounds(280,140,350,140);
panel.add(listFunctionNames);
}
}
catch (ClassNotFoundException | IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
我不确定为什么 Jlist 没有更新,因为我可以在组合框中选择新值时获取值。
不是在 actionPerformed() 方法内部创建 JList,而是在外部创建它
listFunctionNames = new JList();
listFunctionNames.setBounds(280,140,350,140);
panel.add(listFunctionNames);
在 actionPerformed() 中,只需设置值
listFunctionNames.setListData(reflectedValues);