0

我的问题是这个问题的反面:有没有办法在 JOptionPane showInputDialog 中只有 OK 按钮(并且没有 CANCEL 按钮)?

一个解决方案是(如果我没看错的话)添加一个任意的 JPanel,在这种情况下是一个标签。我的问题是我在消息窗口中需要一个 JComboBox 对象,并且(以与解决 Coffee_Table 的问题相同的方式)拥有 JComboBox 似乎删除了取消按钮。我是否将 YES_NO_CANCEL_OPTION 替换为 OK_CANCEL_OPTION 或 QUESTION_MESSAGE 都没关系。

我仍处于学习 JOptionPane 系列的无意识复制阶段,所以我认为解决方案是显而易见的,我只是不知道,因为我没有看到任何无意识复制的具体示例。(这也意味着一旦我学会了如何添加一个取消按钮,我就需要研究如何访问用户是否点击它。编辑:我半信半疑我会怎么做,所以你不要如果您不想回答,则无需回答。)

public static void main(String[] args) {
    int numCh1 = 1;
    String[] moves = {"rock","paper","scissors"};
    JComboBox<?> optionList = new JComboBox<Object>(moves);
    JOptionPane.showMessageDialog(
        null,
        optionList,
        "Player One: Choose a Move",
        JOptionPane.YES_NO_CANCEL_OPTION
    );
    numCh1 = optionList.getSelectedIndex();
    System.out.println(moves[numCh1]);
}

注意:组合框是不可协商的(与三个按钮相反),因为我的实际项目是模拟rps101;我只是认为您不需要查看所有 100 个动作(或与此问题无关的任何其他内容)。

4

1 回答 1

5

您正在使用 showMessageDialog() 方法,该方法仅显示:一条消息。它没有取消选项。为此,请使用其他方法之一。

事实上,最后一个参数甚至无效。它不是在寻找您提供的选项类型,而是在寻找消息类型(ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE)。

一如既往,API 是您最好的朋友:http ://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html

于 2014-01-16T16:07:43.273 回答