gpt4 book ai didi

java - 即使我创建了该类的对象并调用它,JFrame 也没有显示

转载 作者:行者123 更新时间:2023-11-30 06:38:52 26 4
gpt4 key购买 nike

我有这个代码示例。运行应用程序时,我需要更改 JFrame 的背景颜色。

但是当我调用创建 classobject 并使用它的引用变量调用它时,JFrame 没有显示(我认为它被卡住了)我什至在任务栏中看不到 java 图标。

这是我的代码(只有类的构造函数)

package lockme;

import java.awt.Color;
import javax.swing.JFrame;

public class MainWindow extends javax.swing.JFrame {

public MainWindow() {
initComponents();
MainWindow m=new MainWindow();
m.setSize(1368, 768);
m.getContentPane().setBackground(new Color(10, 20, 30));

}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
MainWindow m=new MainWindow();
m.getContentPane().setBackground(new Color(100, 40, 20));//This is not working
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainWindow().setVisible(true);
}
});
}
}

`

但是当我像这样更改上面的代码时,它会显示 JFrame:

package lockme;

import java.awt.Color;
import javax.swing.JFrame;

public class MainWindow extends javax.swing.JFrame {

public MainWindow() {
initComponents();
//MainWindow m=new MainWindow();
this.setSize(1368, 768);
this.getContentPane().setBackground(new Color(10, 20, 30));

}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//MainWindow m=new MainWindow();
this.getContentPane().setBackground(new Color(100, 40, 20));//This isworking
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainWindow().setVisible(true);
}
});
}
}

谁能告诉我这里出了什么问题吗?

最佳答案

这是因为通过在 MainWindow 的构造函数内创建 MainWindow 的新对象,您会陷入无限循环,本质上是试图创建无限数量的新框架。

由于您已经位于 MainWindow 的构造函数中,因此无需再次实例化 MainWindow。

关于java - 即使我创建了该类的对象并调用它,JFrame 也没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747194/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com