java - 使 JFrame 的 JPanel 大小?

标签 java swing jframe jpanel layout-manager

我已经盯着我的代码看了好几个小时了,我几乎把所有东西都删掉了,只剩下最简单的部分,而且我不知道如何让 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/

相关文章:

java - 将JFrame ImageIcon发送到Frame的后面

Java ImageIcon 到 JLabel 数组

相当于 OpenLayers 的 Java

java - 获取 JTable 以打印表格格式

java - 如何在方法期间而不是之后进行按钮更改重绘?

java - 安卓 : Horizontal Calendar wrong date is getting selected

java - 在字符串中使用 new 运算符创建两个对象有什么好处

java - 如何从带有空格的字符串中删除最后一个字符

java - 如何从 LinkedList<Integer> array[] 中删除元素

java - 如何在 JButton 中添加图标