Java 单击按钮以更改可见性

Java 单击按钮以更改可见性,java,swing,jframe,Java,Swing,Jframe,我试图在单击按钮时将可见性设置为false,但编译器显示“不兼容类型”。错误出现在以下位置:如果(frame.setVisible(true))我使用的JFrame,JButton,JLabel,BorderLayout,ActionEvent和ActionListener Object source = event.getSource(); if (source == changeTextButton) { if (label.getT

我试图在单击按钮时将可见性设置为false,但编译器显示“不兼容类型”。错误出现在以下位置:如果(frame.setVisible(true))我使用的
JFrame
JButton
JLabel
BorderLayout
ActionEvent
ActionListener

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)
frame.setVisible(true)
不返回布尔结果,因此不能放置在if块的测试部分内。请查看API,您将看到它被声明为返回
void
——nothing——因此不要将if布尔检查放入其中

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

// Window class
public void setVisible(boolean visible)
同样,该方法声明为返回void,因此您的代码相当于执行以下操作:

if (void) {
  // do something
}
这对编译器没有意义,因为void既不是true也不是false。

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

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

// Window class
public void setVisible(boolean visible)
同样,该方法声明为返回void,因此您的代码相当于执行以下操作:

if (void) {
  // do something
}

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

您需要使用的是:

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

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

您甚至可能不需要
if语句
,只要在按下
close按钮时始终执行
frame.setVisible(false)

您需要使用的是:

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

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

您甚至可能不需要
if语句
,只要在按下
closeButton
时始终执行
frame.setVisible(false)

哪一行给出了错误?“if(frame.setVisible(true))”,问题是该语句不是有效的Java。您实际上是在声明
if(void)
,这是没有意义的。哪一行给出了错误?“if(frame.setVisible(true)),问题是该语句不是有效的Java。您实际上是在声明
if(void)
,这是没有意义的。