当我创建 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 + 空格键提出建议时,ca.
之后没有列出任何内容。仅当我尝试使用硬编码应用程序更改 jFrame 时才会发生这种情况。
堆栈跟踪产生此错误:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException:
Uncompilable source code - Erroneous sym type: classPackage.ClassB.setVisible
如何纠正这个错误?
最佳答案
我不确定你的问题是什么,但你尝试做的事情应该有效。这是我的 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);
}
}
关于java - 无法在硬编码 java 应用程序中的 jFrame 之间进行更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38252087/