Java,JoptionPane:是 - 否对话继续显示

时间:2015-04-18 09:09:14

标签: java netbeans dialog joptionpane

我正在尝试解决Java教科书中的练习,这需要编写一段打开yes-no 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-如果分支代码正确执行,即使通过包括canvas.setColor(Color.RED),仅绘制红色或黑色实心圆;声明与否。 什么[我想念/不知道]? 非常感谢所有能够建议我最简单(嘿!我是初学者)的方式来编写所需的代码。非常感谢所有其他人:)。

1 个答案:

答案 0 :(得分:3)

你可能在paintComponent()中有这个代码,这是一个非常非常糟糕的主意。 paintComponent()被称为每次 swing需要绘制组件。

应该在事件监听器中调用此对话框(例如,当用户单击按钮时)。然后它应该将答案存储在某个布尔字段中,paintComponent()方法应该读取该布尔字段以决定要绘制的内容。