我有一个ArrayList
个字符串,可以在弹出窗口中自动生成一个复选框列表(不同的计数)。我目前在以下代码中遇到两个问题:
Object[] params
无法正常工作,因为它要求我提前知道ArrayList ar
的大小,而我还没有想过让一个对象的arraylist来处理我的代码。我怎样才能解决这个问题?我尝试创建一个对象的arraylist,但我只能让它显示无意义的文本。以下是我的代码:
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
}
图像,适用于喜欢图像的人:
答案 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);
然后继续执行其余代码。