gpt4 book ai didi

java - 为什么自定义组件没有显示在 JFrame 上?

转载 作者:太空宇宙 更新时间:2023-11-04 10:10:13 25 4
gpt4 key购买 nike

我创建了一个自定义组件 InOutList,它扩展了 JComponent,我想将其添加到该 JFrame 上。但它没有出现。

这是自定义组件类:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class InOutLists extends JComponent{
GridBagConstraints gbc = new GridBagConstraints();
JPanel backPanel, p1;
JLabel label;
JButton btn;

InOutLists(){
setBackground(new Color(51, 102, 255));
setPreferredSize(new Dimension(100, 100));
backPanel = new JPanel(new GridBagLayout());
p1 = new JPanel();

label = new JLabel("Label 1");
btn = new JButton("Back");

p1.add(btn);
p1.add(label);
gbc.gridx = 0;
gbc.gridy = 0;

backPanel.add(p1, gbc);
}
}

这是主类:

import java.awt.Dimension;
import javax.swing.JFrame;
import java.awt.BorderLayout;

public class CCMain extends JFrame{
CCMain(){
super("League Management");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(1080, 780);
setPreferredSize(new Dimension(1080, 700));
setMaximumSize(new Dimension(1080, 780));
setVisible(true);

InOutLists iol = new InOutLists();
add(iol, BorderLayout.CENTER);
}
public static void main(String[] args) {
new CCMain();
}
}

最佳答案

如果出于某种原因您需要 backPanelp1 使用:(请参阅注释的更改)

class InOutLists extends JComponent{

InOutLists(){
setBackground(new Color(51, 102, 255));
setPreferredSize(new Dimension(100, 100));
setLayout(new FlowLayout()); //set a layout manager to JComponent
JPanel backPanel = new JPanel(new GridBagLayout());
JPanel p1 = new JPanel();
JLabel label = new JLabel("Label 1");
JButton btn = new JButton("Back");

p1.add(btn);
p1.add(label);

GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
backPanel.add(p1, gbc);

add(backPanel);//add backPanel to JComponent
}
}

否则,您可以将标签和按钮添加到组件中:

class InOutLists extends JComponent{

InOutLists(){
setBackground(new Color(51, 102, 255));
setPreferredSize(new Dimension(100, 100));
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();

JLabel label = new JLabel("Label 1");
gbc.gridx = 0;
gbc.gridy = 0;
add(label, gbc);

JButton btn = new JButton("Back");
gbc.gridy = 1;
add(btn, gbc);
}
}

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

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