Java:无法解析方法' setVisible(boolean)'

时间:2017-11-01 10:11:21

标签: java intellij-idea

我希望我的程序在单击SkipBtn时打开第二个表单(已创建),但IntelliJ会抛出此错误:

  

错误:(24,19)java:找不到符号符号:方法   setVisible(boolean)location:类型的变量pw   com.timeforbreak.PasswordWindow

我的代码:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class BreakWindow {
    private JButton skipBtn;
    private JPanel breakWindow;

    public static void main(String[] args) {
        JFrame frame = new JFrame("BreakWindow");
        frame.setContentPane(new BreakWindow().breakWindow);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    public BreakWindow() {
        skipBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                PasswordWindow pw = new PasswordWindow();
                pw.setVisible(true);
            }
        });
    }


}

=================================

package com.timeforbreak;

import javax.swing.*;

public class PasswordWindow extends BreakWindow {
    private JTextField password;
    private JPanel passwordWindow;

    public static void main(String[] args) {
        JFrame frame = new JFrame("PasswordWindow");
        frame.setContentPane(new PasswordWindow().passwordWindow);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:0)

您的框架是一个局部变量,它无法在方法外部访问,尝试制作JFrame框架全局变量。

在main方法之外声明JFrame frame;并在main方法

中初始化它

答案 1 :(得分:0)

您正在创建PasswordWindow:

PasswordWindow pw = new PasswordWindow();

扩展了BreakWindow

public class PasswordWindow extends BreakWindow

但是BreakWindow是您的第一堂课main而且没有这样的方法setVisible(boolean)

您的BreakWindow应该延长JFrame,您可以这样做:

public static void main(String[] args) {
    JFrame frame = new BreakWindow("BreakWindow"); // was JFrame

不要记得在BreakWindow课程中插入相应的构造函数。