Java:对象的数组列表和获取自动创建的复选框的值/属性
Posted
技术标签:
【中文标题】Java:对象的数组列表和获取自动创建的复选框的值/属性【英文标题】:Java: Array list of objects & getting values/properties of automatically created checkboxes 【发布时间】:2016-10-22 06:42:52 【问题描述】:我有一个ArrayList
的字符串,它会在弹出窗口中自动生成一个复选框列表(数量不同)。我目前对以下代码有两个问题:
Object[] params
不起作用,因为它需要我提前知道 ArrayList ar
的大小,而且我还没有想办法让对象的数组列表与我的代码一起使用。我怎样才能解决这个问题?我尝试创建一个对象数组列表,但我只能让它显示无意义的文本。
如何获取每个复选框的值/文本及其各自的 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
图片,给喜欢图片的人:
【问题讨论】:
【参考方案1】:您可以将其设为 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
【讨论】:
我可以像下面那样将复选框添加到“params”,这样我只需要创建一个对象来包含在“params”而不是“x”对象中。 ----- Object[] params = message, checkboxes; 如果你愿意,你可以这样做,但最好创建一个简单的类来保存字符串消息和 ArrayListcheckbox.getText()
访问每个 JCheckBox 的文本【参考方案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);
然后继续执行其余的代码。
【讨论】:
以上是关于Java:对象的数组列表和获取自动创建的复选框的值/属性的主要内容,如果未能解决你的问题,请参考以下文章