簡體   English   中英

使JPanel大小為JFrame?

[英]Make JPanel size of JFrame?

我一直盯着我的代碼幾個小時,我幾乎把所有的東西都切成了最簡單的部分,我不知道如何讓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 ,因此您需要調用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

LayoutManager設置為BorderLayout

setLayout(new BorderLayout());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM