sách gpt4 ai đã đi

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

In lại 作者:行者123 更新时间:2023-11-30 05:55:16 27 4
mua khóa gpt4 Nike

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

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

nhập 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


nhập javax.swing.*;
nhập 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;
}

@Ghi đè
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//drawGUI();
}

}

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

1 Câu trả lời

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

Ví dụ,

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
Bài viết được đề xuất: java - 日志输出中的奇怪符号
Bài viết được đề xuất: Java 多线程类方法?
Bài viết được đề xuất: java - 绘图时如何防止屏幕闪烁?
Bài viết được đề xuất: java - 如何使用 ormlite 在多对多关系中检索整个数据集?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com