gpt4 book ai didi

java - 尝试将 Jpanel 添加到 JFrame,但在调整 JPanel 窗口大小后将显示 Jpanel 的内容

转载 作者:行者123 更新时间:2023-11-30 05:55:16 27 4
gpt4 key购买 nike

我正在尝试学习如何使用编码风格在 Java 中完成 GUI 的工作这就是我写的:

import java.awt.Container;
import java.awt.Panel;

import javax.swing.*;

public class Class1 extends JFrame {


public void createGUI()
{
JpanelMock jm = new JpanelMock();
setTitle("Frame1");
setSize(320,200);
this.add(jm.drawGUI());

}

public static void main(String [] arg)
{
Class1 cls = new Class1();

cls.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cls.setVisible(true);
cls.createGUI();
}

}

//----------------------------JpanelMock.java


import javax.swing.*;
import java.awt.*;

public class JpanelMock extends JPanel {

public JpanelMock() {

}

public Component drawGUI()
{
super.setBackground(Color.YELLOW);
JButton b = new JButton("button 1");
JLabel l = new JLabel("label 1");
JTextField tf = new JTextField("text 1");
this.add(b);
this.add(l);
this.add(tf);
return this;
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//drawGUI();
}

}

但是当我启动程序时,如果我不执行任何与重绘事件相关的操作,我将看不到带有文本 + 按钮的黄色 jpanel。为什么会这样?

最佳答案

每当我看到像你这样的问题时,我都不必看代码。在向 JFrame 添加组件之前,您要在 JFrame 上调用 setVisible(true)。更改其顺序:仅所有组件都已添加后才对 JFrame 调用 setVisible(true)

例如,

public static void main(String [] arg) {
Class1 cls = new Class1();

cls.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// cls.setVisible(true); // *** removed
cls.createGUI();
cls.setVisible(true); // *** added
}

关于java - 尝试将 Jpanel 添加到 JFrame,但在调整 JPanel 窗口大小后将显示 Jpanel 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459933/

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