2

我盯着我的代码看了好几个小时,我几乎把所有的东西都剪成了最简单的部分,我不知道如何让 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);
    }
}
4

2 回答 2

6

这是一个典型的BorderLayout场景。

默认情况下,JPanelsFlowLayout 已经设置了一个,所以你需要调用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
于 2012-12-02T05:37:22.300 回答
5

设置LayoutManagerBorderLayout

setLayout(new BorderLayout());
于 2012-12-02T05:38:10.443 回答