我正在尝试实现类似于以下内容:
public void execute(){
RandomClass item = showPopupBox(randomClassArrayList).selectItem();
randomClassArrayList.remove(item);//Obv I can make this one line.
}
showPopupBox
将创建一个弹出框(如图),为列表中的每个项目填充单选按钮的列表,并在按下OK按钮时从列表中返回选定的项目。在此之前,execute方法将等待弹出框从通过单选按钮选择的弹出框中返回该项目。我真的不能发布更多的东西,因为如果可以的话,我就不需要问了。我正在尝试通过弹出框填充参数。
我的问题仅与让
execute()
方法等待按下弹出框的“确定”按钮有关,这将填充参数并完成execute()
方法 最佳答案
您可以执行以下操作(未经测试):
public static RandomClass showPopupBox(List<RandomClass> list)
{
JRadioButton[] rdoArray = new JRadioButton[list.size()];
ButtonGroup group = new ButtonGroup();
JPanel rdoPanel = new JPanel();
for(int i = 0; i < list.size(); i++)
{
rdoArray[i] = new JRadioButton(list.get(i).toString());
group.add(rdoArray[i]);
rdoPanel.add(rdoArray[i]);
}
rdoArray[0].setSelected(true);
JOptionPane pane = new JOptionPane();
int option = pane.showOptionDialog(null, rdoPanel, "The Title",
JOptionPane.NO_OPTION,
JOptionPane.PLAIN_MESSAGE,
null, new Object[]{"Submit!"}, null);
if(option == 0)
{
for(int i = 0; i < list.size(); i++)
if(rdoArray[i].isSelected()) return list.get(i);
}
return null;
}
然后,您可以像这样使用它:
RandomClass item = showPopupBox(randomClassArrayList);