簡體   English   中英

如何在JFrame中居中放置Jpanel?

[英]How to Center Jpanel in JFrame?

有一個擴展JFrame的類。 然后,進一步的JFrame具有名為contentPane的JPanel ,此Jpanel包含另外2個jpanel。 如圖所示的樹。

這是圖像

我想在JFrame將該contentPane居中,以便在更改JFrame大小時, JPanel (contentPane)保持居中。 我嘗試使用不同的Layouts但沒有提出正確的Layouts 有什么辦法嗎? 整張圖片在這里

代碼是這個。

public class Purchases extends JFrame {

    private JPanel contentPane;

public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Purchases frame = new Purchases();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }); 
    }


        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 513, 438);


        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        setLocationRelativeTo(null);



        JPanel panel = new JPanel();
        panel.setBounds(10, 10, 477, 193);
        contentPane.add(panel);
        panel.setLayout(null);

        JPanel panel_1 = new JPanel();
        panel_1.setBounds(10, 214, 477, 174);
        contentPane.add(panel_1);
        panel_1.setLayout(null);

}

這段代碼是Eclipse自動生成的。 我沒有在JFrame中找到contentPane的位置。

將框架的布局設置為GridBagLayout 將現有內容包裝到另一個JPanel ,將此面板添加到框架中

舉個例子

看一看在容器布置組件以及如何使用GridBagLayout以獲得更多詳細信息

您確實應該避免使用null布局,像素完美布局是現代ui設計中的一種幻覺。 有太多因素會影響組件的單個大小,您無法控制。 Swing旨在與布局經理為核心一起工作,舍棄這些問題不會導致問題和問題的終結,您將花費越來越多的時間來嘗試糾正

我已經為您制作了樣品。 根據需要進行修改。 只是想向您展示您想要什么,正在工作。

    TestClass()
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 513, 438);

        contentPane = new JPanel();
        contentPane.setLayout(new BorderLayout());

        JButton b1 = new JButton("hello");
        JPanel panel = new JPanel(new BorderLayout());
        //panel.setBounds(10, 10, 477, 193);
        panel.add(b1, BorderLayout.CENTER);
        contentPane.add(panel, BorderLayout.EAST);
        //panel.setLayout(null);

        JButton b2 = new JButton("why");
        JPanel panel_1 = new JPanel(new BorderLayout());
        //panel_1.setBounds(10, 214, 477, 174);
        panel_1.add(b2, BorderLayout.CENTER);
        contentPane.add(panel_1, BorderLayout.WEST);
        //panel_1.setLayout(null);

        this.getContentPane().add(contentPane);
    }

希望這會有所幫助。 :-)

我認為您應該設置元素的最大尺寸並將其設置為對齊中心:

setAlignmentX(JComponent.CENTER_ALIGNMENT);
setMaximumSize(new Dimension(100, 100));

如此處所述: 如何正確地將JPanel(FIXED SIZE)放在JFrame內部?

暫無
暫無

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

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