Java:对象的数组列表&获取自动创建的复选框的值/属性

时间:2016-06-20 21:35:23

标签: java swing arraylist

我有一个ArrayList个字符串,可以在弹出窗口中自动生成一个复选框列表(不同的计数)。我目前在以下代码中遇到两个问题:

  • Object[] params无法正常工作,因为它要求我提前知道ArrayList ar的大小,而我还没有想过让一个对象的arraylist来处理我的代码。我怎样才能解决这个问题?我尝试创建一个对象的arraylist,但我只能让它显示无意义的文本。
  • 如何获取每个复选框的值/文本及其相应的isSelected()状态?

以下是我的代码:

String message = "The selected servers will be shutdown.";
Object[] params = {message, null, null, null, null, null};

ArrayList<String> ar = GetSet.getStopCommand(); // Example array: ./Stopplm11.sh|./Stopplm12.sh|./Stopplm14.sh|./Stopplm15.sh

for(int i=0; i< ar.size(); i++){
    JCheckBox checkbox = new JCheckBox();
    checkbox.setText(ar.get(i).toString());
    checkbox.setSelected(true);
    params[i+1]= checkbox;
}

int n = JOptionPane.showConfirmDialog(btnShutdownServer, params, "Shutdown Servers", JOptionPane.OK_CANCEL_OPTION);

if (n == JOptionPane.OK_OPTION){
    // DO STUFF
    //boolean buttonIsSelected= checkbox.isSelected();
}else{
    // user cancelled
}

图像,适用于喜欢图像的人:

Image for those who like images

2 个答案:

答案 0 :(得分:3)

你可以把它变成JCheckBox的ArrayList:

ArrayList<JCheckBox> checkboxes = new ArrayList<JCheckBox>();

然后你可以这样做:

for(int i = 0; i < ar.size(); i++)
{
    JCheckBox checkbox = new JCheckBox();
    checkbox.setText(ar.get(i).toString());
    checkbox.setSelected(true);

    // add the checkbox to the ArrayList
    checkboxes.add(checkbox);
}

最后,要检查if条件中所有复选框的状态,您只需执行以下操作:

if (n == JOptionPane.OK_OPTION){
    // DO STUFF
    //boolean buttonIsSelected= checkbox.isSelected();

    // loop through all checkboxes in the ArrayList
    for (JCheckBox checkbox : checkboxes)
    {
        // current one is selected
        boolean buttonIsSelected = checkbox.isSelected();
    }

    // rest of code in if condition
}

答案 1 :(得分:2)

不是将params存储在数组中,而是将这些参数存储在ArrayList中,如下所示:

ArrayList<Object> params = new ArrayList<Object>();
params.add("The selected servers will be shutdown.");

for(int i = 0; i < ar.size(); i++)
{
    JCheckBox checkbox = new JCheckBox();
    checkbox.setText(ar.get(i).toString());
    checkbox.setSelected(true);
    params.add(checkbox);
}

然后,使params成为一个数组:

Object[] realParams = new Object(params.size());
realParams = params.toArray(realParams);

然后继续执行其余代码。