【问题标题】:Adding a cancel button to my JOptionPane向我的 JOptionPane 添加取消按钮
【发布时间】:2014-01-16 16:02:47
【问题描述】:

我的问题与这个问题相反:Is there a way to only have the OK button in a JOptionPane showInputDialog (and no CANCEL button)?

一个解决方案是(如果我没看错的话)添加一个任意的 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 个动作(或与此问题无关的任何其他内容)。

【问题讨论】:

  • 只需制作一个自定义模型 JDialog。这并不难。然后你可以随心所欲地自定义它

标签: java swing jcombobox joptionpane cancel-button


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多