gpt4 book ai didi

java - JPanel 到底做了什么?据我所知,它创建了内容 Pane ,我们可以在其中添加组件,是这样吗?

转载 作者:行者123 更新时间:2023-11-29 05:30:32 24 4
gpt4 key购买 nike

在下面的代码中,我将 JFrame 的内容面板的背景色设置为黑色,将 JPanel 的背景色设置为红色。但是,当我尝试使用不同尺寸的 setSize() 时,红色区域不会收缩或膨胀,为什么会这样?

import java.awt.*;
import javax.swing.*;
public class exp{
public static void main(String args[]){
JFrame jf=new JFrame("This is JFrame");
JPanel h=new JPanel();
h.setSize(400,500);

h.add(new JButton("Button"));
h.add(new JLabel("this is JLabel"));
h.setBackground(Color.RED);

jf.add(h);
jf.getContentPane().setBackground(Color.BLACK);
jf.setLayout(new FlowLayout());


jf.setVisible(true);
jf.setSize(600,800);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

最佳答案

JPanel 通常用作组件或其他容器的容器。面板的大小更多地取决于内容的大小以及添加它的布局和布局约束,而不是其上设置的任何大小。

您在这里尝试的效果最好通过在面板上设置 EmptyBorder 来实现。例如

enter image description here enter image description here

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

public class exp{
public static void main(String args[]){
Runnable r = new Runnable() {
public void run() {
JFrame jf=new JFrame("This is JFrame");
JPanel h=new JPanel();
// add more space around the panel!
h.setBorder(new EmptyBorder(50,50,50,50));

h.add(new JButton("Button"));
h.add(new JLabel("this is JLabel"));
h.setBackground(Color.RED);

jf.add(h);
jf.getContentPane().setBackground(Color.BLACK);
jf.setLayout(new FlowLayout());

jf.setVisible(true);
jf.pack();
jf.setMinimumSize(jf.getSize());
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
};
SwingUtilities.invokeLater(r);
}
}

关于java - JPanel 到底做了什么?据我所知,它创建了内容 Pane ,我们可以在其中添加组件,是这样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21230115/

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