我已经盯着我的代码看了好几个小时了,我几乎把所有东西都删掉了,只剩下最简单的部分,而且我不知道如何让 JPanel 扩展到框架的大小。理想情况下(最后)我想要一个带有南北内容面板的容器面板。放置南面板后,北面板需要占用剩余的空间。
不过现在,我有一个小红点,它的大小与其内容一样大。有人可以让我深入了解我做的根本错误吗?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class TestCode extends JFrame {
private DescriptionPanel window = new DescriptionPanel();
public static void main(String[] args){
TestCode frame = new TestCode();
frame.pack();
frame.setTitle("Grape Project");
frame.setLocationRelativeTo(null);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public TestCode(){
add(window);
}
}
DescriptionPanel 类:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DescriptionPanel extends JPanel{
private JPanel container = new JPanel();
public DescriptionPanel(ImageIcon pic, JLabel text){
container.setBackground(Color.red);
add(container);
}
}
最佳答案
这是一个典型的 BorderLayout
设想。
默认情况下,JPanel
有一个FlowLayout
already set ,因此您需要调用 setLayout
,或者您可以使用适当的布局管理器初始化您的 DescriptionPanel
:
super(new BorderLayout());
// setLayout(new BorderLayout());
add(top, BorderLayout.CENTER); // take all available upper space left
add(bottom, BorderLayout.SOUTH); // take the vertical space specified
关于java - 使 JFrame 的 JPanel 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13666705/