Получить параметры из всплывающего окна - PullRequest
2 голосов
/ 13 января 2012

Я пытаюсь добиться чего-то похожего на это:

public void execute(){
 RandomClass item = showPopupBox(randomClassArrayList).selectItem();
 randomClassArrayList.remove(item);//Obv I can make this one line.
}

showPopupBox создаст всплывающее окно (рисунок), заполнит список переключателей для каждого элемента в списке ивернуть выбранный элемент из списка, когда вы нажмете кнопку ОК.до тех пор метод execute не будет ждать, пока всплывающее окно вернет элемент из всплывающего окна, выбранного с помощью переключателя.

Я не могу действительно публиковать что-либо большее, чем это, потому что если бы я мог, мне не нужно было бы спрашивать.Я пытаюсь заполнить параметр через всплывающее окно.

Мой вопрос связан только с тем, что метод execute() ожидает нажатия кнопки ОК во всплывающем окне, что заполняет параметр и завершает метод execute()

1 Ответ

4 голосов
/ 13 января 2012

Вы можете сделать что-то вроде этого (не проверено):

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...