0

因此,我对如何根据可用的串行端口更改组合框中的选项感到困惑。谁能帮我解决这个问题?我想我需要使用 javax.swing.getModel,但我不确定如何做到这一点。

  if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
        ArrayList<String> serialports = new ArrayList<String>();
        serialports.add(portId.getName());
        String[] ports = new String[serialports.size()];
        ports = serialports.toArray(ports); 
        GUI.jComboBox2 = new JComboBox(ports);
        GUI.jComboBox2.addActionListener(GUI.jComboBox2);
        wantedPortName = (String) GUI.jComboBox2.getSelectedItem();
4

1 回答 1

2

有两个问题...由于缺乏上下文,很难知道哪个是正确的

可能性 #1

您之前已创建组合框并将其添加到屏幕......

如果是这种情况,那么您的代码刚刚取消引用它。这意味着屏幕上的控件不再是您正在与之交互的控件。

在这种情况下,您应该只更新模型...

ArrayList<String> serialports = new ArrayList<String>();
serialports.add(portId.getName());
String[] ports = new String[serialports.size()];
ports = serialports.toArray(ports); 
ComboBoxModel<String> model = new DefaultComboBoxModel<>(ports);
GUI.jComboBox2.setModel(model);

可能性 #2

您以前从未将组合框添加到屏幕上......

在这种情况下,您应该...但是没有足够的上下文来描述您将如何使用您的代码实现这一目标...

可能性 #3

我不知道你在说什么...

于 2013-06-24T06:36:20.100 回答