gpt4 book ai didi

java - 为什么 JPanel 没有显示在 JFrame 中?

转载 作者:行者123 更新时间:2023-11-30 08:28:15 25 4
gpt4 key购买 nike

Java 新手。我在两个单独的 Java 文件中有两个类。

Grid.java 的代码是:

package grid;

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

public class Grid {


public static void main(String[] args){

JFrame f = new JFrame("The title");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,400);
f.setResizable(false);
f.setVisible(true);


GridSupport g = new GridSupport();
f.add(g); //getting error when i don't extends GridSupport to JPanel

}

}

GridSuppoer.java 的代码是:

package grid;

import java.awt.*;

import javax.swing.*;


public class GridSupport extends JPanel{

private JPanel p;
private JButton b;

public GridSupport(){



p = new JPanel();
p.setBackground(Color.GREEN);
p.setSize(100, 100);

b = new JButton("Click me!");
p.add(b);

}

}

我想知道 1) 为什么没有显示 JPanel? 2) 如果我将两个类放在同一个文件中,我不需要将 GridSupport 类扩展到 JPanel,但是当我将它们放在两个单独的文件中时,我需要扩展 JPanel,否则它会显示错误。这是为什么?

最佳答案

JFrame f = new JFrame("The title");
GridSupport g = new GridSupport();
f.add(g)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(500,400);
f.setResizable(false);
f.setVisible(true);

在设置框架可见之前添加 GridSupprt。通常,您应该确保在使框架可见之前将所有组件添加到框架中

GridSupport 本身是一个 JPanel。因此,当您在 GridSupport 中创建一个新的 JPanel 并将所有内容添加到该 Panel 中时,您仍然需要将内部面板添加到 GridSupport

public class GridSupport extends JPanel{

private JButton b;

public GridSupport(){

setBackground(Color.GREEN);
setSize(100, 100);

b = new JButton("Click me!");
add(b);

}
}

关于java - 为什么 JPanel 没有显示在 JFrame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20336820/

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