Java,JoptionPane : the yes-no dialog keeps on showing

标签 java netbeans dialog joptionpane

我正在尝试解决 Java 教科书中的一个练习,该练习需要编写一段代码来打开是/否 gialog,询问用户是否要绘制一个实心圆并将其着色为红色(是)或不(否),在这种情况下颜色为黑色(默认情况下;但为了清楚起见,我决定无论如何在我的代码中包含一个特定的语句)。我想到了(IDE:NetBeans)...:

int centre = JOptionPane.showConfirmDialog(null, "Do you want I turn the solid center circle color from black to red?", 
                    "Click Yes or No:", JOptionPane.YES_NO_OPTION);

            if (centre == JOptionPane.YES_OPTION)
            {
                canvas.setColor(Color.RED);

            }
            else if (centre == JOptionPane.NO_OPTION)
            {
                canvas.setColor(Color.BLACK);
            }

            canvas.drawOval(200, 200, 100, 100);
            canvas.fillOval(225, 225, 50, 50); 

...,但在选择任一选项后,对话框不断打开。如果没有对话框+ else-if 分支,即使根据您包含的 canvas.setColor(Color.RED); 仅以红色或黑色绘制实心圆,代码也能正确执行。声明或不声明。 [我想念/我不知道]什么? 非常感谢所有能够向我建议最简单(嘿!我是初学者)方法来编写所需代码的人。也非常感谢所有其他人:)。

最佳答案

您可能在 paintComponent() 中有这段代码,这是一个非常非常糟糕的主意。 每次 swing 需要绘制组件时都会调用 paintComponent()

应该在事件监听器中调用此对话框(例如,当用户单击按钮时)。然后,它应该将答案存储在某个 boolean 字段中,并且 paintComponent() 方法应该读取该 boolean 字段来决定绘制什么。

关于Java,JoptionPane : the yes-no dialog keeps on showing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29715209/

相关文章:

dialog - 如何调整 css-sprite 的部分大小?

java - 推导出最长路径

java - 在不换行的情况下在 cmd 中显示进度

java - 从Spring boot JPA连接到oracle表,没有@Entity注释和@Id

java - 将带有嵌入式数据库的 netbeans 项目转换为独立的 java 程序

Java 在 Eclipse 中运行但在 Netbeans 中无法成功打开文件

emacs - ClojureBox 教程

Android:如何创建没有标题的对话框?

Java:单行三元运算符 if stmt

android - 将对话框 fragment 标题设置为从右侧显示