我正在尝试在单击按钮时将可见性设置为false,但编译器会显示“不兼容的类型”。如果if (frame.setVisible(true))
我使用JFrame
,JButton
,JLabel
,BorderLayout
,ActionEvent
和ActionListener
<,则会出现错误/ 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)
答案 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>