在继续之前等待Java Swing中按下按钮?

在继续之前等待Java Swing中按下按钮?,java,swing,user-interface,Java,Swing,User Interface,所以我有这个GUI public ChangePokemonView(Controller c) { this.controller = c; this.currentBattleEnvironment = currentBattleEnvironment.getInstance(); populateInactivePokemon(); //REMOVE LATER REMOVE LATER REMOVE LATER REMOVE LATER REMOVE LAT

所以我有这个GUI

public ChangePokemonView(Controller c)
{
    this.controller = c;
    this.currentBattleEnvironment = currentBattleEnvironment.getInstance();
    populateInactivePokemon(); //REMOVE LATER REMOVE LATER  REMOVE LATER  REMOVE LATER  REMOVE LATER 
    this.pokemonList = new JList(inactivePlayerPokemon);
    pokemonList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //Only one thing can be selected at a time.
    this.pokemonLabel = new JLabel("Choose your Pokemon!");
    this.confirmSelection = new JButton("Confirm Selection");
    this.confirmSelection.addActionListener(this);

    setLayout(new BorderLayout());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Closes GUI window when close, may need to change later
    JPanel centerPanel = new JPanel(new GridLayout(3, 1));
    centerPanel.add(pokemonLabel);
    centerPanel.add(pokemonList);
    centerPanel.add(confirmSelection);

    add("Center", centerPanel);
    pack();
    setVisible(true);
}
这只会创建一个项目列表和一个按钮。当点击按钮时,它将获取所选项目并将其返回给控制器,然后对其进行处理(对于我们的项目,它将更改玩家pokemon)

setCurrentPokemon与控制器之间实际上没有任何关联。我只是想确保它现在就可以得到选择。但是,我在等待选择之前遇到了其他代码的问题

我认为使用Java的Swing和input应该暂停并等待输入,然后再继续编写其余的代码。但是,它现在运行打开选择菜单,然后在控制器中将选定的口袋妖怪设置为null。我曾想过在等待和绕过这一点的过程中加入一个while循环,但我觉得在Swing中有一种更简单的方法来实现这一点

是否有办法让我的其余代码等待按钮被选中并处理操作?


提前感谢。

使用
作业窗格
。它将为您构建模式对话框和按钮。模式对话框在关闭之前停止执行

有关更多信息和工作示例,请阅读上Swing教程的部分

add("Center", centerPanel);
不要使用“魔法”值。API将定义应使用的值。这也不是向容器添加组件的方法。相反,您应该使用:

add(centerPanel, BorderLayout.CENTER);
add(centerPanel, BorderLayout.CENTER);