gpt4 book ai didi

java - 加载包含另一个 JPanel 的 JPanel

转载 作者:行者123 更新时间:2023-11-30 08:13:21 26 4
gpt4 key购买 nike

我正在尝试加载一个类,该类扩展了 JPanel 并具有来自另一个类的组件,该类也将 JPanel 扩展到另一个类中。 enter image description here

这就是我需要实现的目标: enter image description here

First.java 示例

  public class First extends JPanel{
JPanel cont = new JPanel();
public First(){
cont.setBackground(Color.YELLOW);
}
}

Second.java 示例

  public class Second extends JPanel{
JPanel cont = new JPanel();
First first_panel = new First();
public Second(){
cont.setBackground(Color.RED);
cont.add(first_panel);
}
}

Container.java 示例

   public class Container extends JFrame{
JFrame frame = new JFrame();
JPanel cont = new JPanel();
Second second_panel = new Second();
public Container(){
cont.setBackground(Color.GREEN);
cont.add(second_panel);
frame.add(cont);
frame.setVisible(true);
}
}

我可以一个一个地加载类,但是当我尝试加载包含另一个 panel.class 的面板时,GUI 不显示它。逻辑有什么问题?有什么问题?

最佳答案

显示的代码中有两个基本问题。

  1. 每个类都扩展并拥有它处理的组件的一个实例。
  2. 两个面板都没有任何内容会赋予它非零大小,也没有覆盖 getPreferredSize 方法,因此它们是 0x0 像素。

看看这个MCVE的效果。

enter image description here

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

public class Container {

JFrame frame = new JFrame();
JPanel cont = new JPanel();
Second second_panel = new Second();

public Container() {
cont.setBackground(Color.GREEN);
cont.add(second_panel.getPanel());
frame.add(cont);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}

public static void main(String[] args) {
Runnable r = new Runnable() {

@Override
public void run() {
new Container();
}
};
SwingUtilities.invokeLater(r);
}
}

class Second {

JPanel cont = new JPanel();
First first_panel = new First();

public Second() {
cont.setBackground(Color.RED);
cont.add(new JLabel("Second"));
cont.add(first_panel.getPanel());
}

public JComponent getPanel() {
return cont;
}
}

class First {

JPanel cont = new JPanel();

public First() {
cont.setBackground(Color.YELLOW);
cont.add(new JLabel("First"));
}

public JComponent getPanel() {
return cont;
}
}

关于java - 加载包含另一个 JPanel 的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010290/

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