单击按钮可更改可见性

时间:2014-05-01 00:30:51

标签: java swing jframe

我正在尝试在单击按钮时将可见性设置为false,但编译器会显示“不兼容的类型”。如果if (frame.setVisible(true))我使用JFrameJButtonJLabelBorderLayoutActionEventActionListener <,则会出现错误/ p>

Object source = event.getSource();

        if (source == changeTextButton)
        {
            if (label.getText().equals(LABEL1))
            {
                label.setText(LABEL2);
            }
            else
            {
                label.setText(LABEL1);
            }
        }  // end of if (source == button)

        if (source == closeButton)
        {
            if (frame.setVisible(true))
            {
                setVisible(false);
            }
        } // end of if (source == closeButton)

2 个答案:

答案 0 :(得分:4)

frame.setVisible(true)不返回布尔结果,因此不能放在if块的测试部分内。请查看API,您将看到它被声明为返回void - 没有 - 所以如果布尔检查,请不要放入其中。

要重申,根据Java API,setVisible方法签名如下所示:

// Window class
public void setVisible(boolean visible)

因此,该方法被声明为返回void,因此您的代码等同于:

if (void) {
  // do something
}

这对编译器没有意义,因为void既不是真也不是假。

答案 1 :(得分:2)

您需要使用的是:

if(frame.isVisible()){
fram.setVisible(False);
}

frame.isVisible() returns a boolean (true or false)

您可能甚至不需要if statement,只需按frame.setVisible(false)closeButton。{/ p>