lei*_*ero 2 java swing jpanel jframe 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);
}
}
Run Code Online (Sandbox Code Playgroud)
和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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是典型的BorderLayout情况.
默认情况下,JPanels FlowLayout 已设置,因此您需要调用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
Run Code Online (Sandbox Code Playgroud)
设置LayoutManager为BorderLayout:
setLayout(new BorderLayout());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4423 次 |
| 最近记录: |