当我创建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
如何更正此错误?
答案 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);
}
}