当前位置: 首页 > 知识库问答 >
问题:

向我的JOptionPane添加取消按钮

钮誉
2023-03-14

一个解决方案是(如果我读对了的话)添加一个任意的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个动作(或任何与这个问题无关的东西)。

共有1个答案

田念
2023-03-14

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

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

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

 类似资料:
  • 我在这里看到了一些例子:http://docs.oracle.com/javase/7/docs/api/javax/swing/joptionpane.html 它似乎表明我应该用一个自定义的按钮列表来替换我的组合框,这不是我想要的。我需要有3个按钮(好的,跳过,取消),以及项目列表。 更新:为了说明我的GUI应该是什么样子: null 目前我的代码如下所示: 灵感来自:Java:showInp

  • 我创建了类型。当它打开它时,它会向我显示两个按钮:OK和Cancel。我想在按下取消按钮时处理该操作,但我不知道如何到达该操作。我怎么才能拿到?

  • 问题内容: 我的网站上有一个jqgrid(版本3.5.3),它是通过对Web服务的Ajax调用获取结果的。查询通常很复杂,加载结果需要花费几秒钟的时间。加载时,用户会看到一个框[Loading …]。 如果用户意识到他们在搜索错误的内容,则客户端要求向网格添加一个取消按钮,这将: 使网格忘记刚刚请求的数据 保留先前搜索中已加载的结果 似乎没有内置任何功能,因此我可能正在寻找一些技巧来实现这一目标。

  • 我的JOptionPane有一个问题,如果我不输入任何东西,无论我按什么(ok,cancel或x按钮(JOptionPane的右上角按钮)),它都会提示我,直到我输入一个正值。但是我只希望当我按下ok时出现提示。 如果我点击取消或x按钮(JOptionPane的右上角按钮),它将关闭JOptionPane 我怎么能这样呢?

  • 我是新手颤动,我使用Firebase消息发送通知到设备,我们使用Web API发送请求到Firebase发送通知和Firebase发送通知到Android。我想在通知标题和身体显示两个按钮(接受和拒绝)像瓦特应用程序通知标记为已读选项我想要这样的东西。 我添加的Android清单文件: 颤振码 Web api服务代码