在硬编码的Java应用程序中,jFrame之间无法更改?

时间:2016-07-07 17:48:52

标签: java swing netbeans

当我创建Swing GUI类时,我可以使用以下代码通过jButton从一个JFrame更改为另一个JFrame:

private void btnChangeClassActionPerformed(java.awt.event.ActionEvent evt) {                                               

        ClassA ca = new ClassA();
        ca.setVisible(true);
        this.dispose();
    }

但是当我创建一个空白的java类(硬编码)时,此代码不起作用,因为.setVisible(true);不起作用。事实上,当我按ctrl + space来显示建议时,ca.之后没有列出任何内容。仅当我尝试使用硬编码应用程序更改jFrame时才会出现这种情况。

stacktrace会产生此错误:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException:
Uncompilable source code - Erroneous sym type: classPackage.ClassB.setVisible

如何更正此错误?

1 个答案:

答案 0 :(得分:1)

我不确定你的问题是什么,但是你想做的事情应该有效。这是我的ClassA.java

示例
public class ClassA extends JFrame{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("helo moto");
        ClassA a = new ClassA();
    }

    ClassA(){
        super();
        setSize(200, 200);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JButton button = new JButton("ClassB");
        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                new ClassB();
                ClassA.this.dispose();
            }
        });
        Container container = getContentPane();
        container.add(button);
        setVisible(true);
    }
}

这是ClassB.java:

public class ClassB extends JFrame{
    ClassB(){
        super();
        setSize(200, 200);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        JButton button = new JButton("ClassA");

        button.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
                new ClassA();
                ClassB.this.dispose();
            }
        });
        Container container = getContentPane();
        container.add(button);
        setVisible(true);
    }   
}