簡體   English   中英

在Java中將jpanel添加到jpanel中

[英]adding a jpanel into a jpanel in java

我有一個Jpanel命名mainPanel和其他類名為MyPanel擴展JPanel 我想將MyPanel添加到mainPanel 我做了這段代碼,沒有結果。

這是我的main類,其中包含mainPanel

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;


public class Main extends JFrame {

    private JPanel contentPane;
    private final JPanel mainPanel = new JPanel();

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

    /**
     * Create the frame.
     */
    public Main() {
        inItGUI();
    }
    private void inItGUI() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 662, 417);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        mainPanel.setBounds(25, 11, 611, 341);

        contentPane.add(mainPanel);
        mainPanel.setLayout(null);

        mainPanel.add(new MyPanel());// **Here i added MyPanel**
        mainPanel.revalidate();
        repaint();
    }

}

這是我MyPanel已將beeb添加到mainPanel MyPanel類:

import java.awt.Component;

import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class MyPanel extends JPanel {

    private final JButton btnNewButton = new JButton("New button");
    private final JButton btnNewButton_1 = new JButton("New button");
    public MyPanel() {

        inItGUI();
    }
    private void inItGUI() {
        setLayout(null);
        btnNewButton.setBounds(60, 49, 106, 43);

        add(btnNewButton);
        btnNewButton_1.setBounds(189, 49, 89, 43);

        add(btnNewButton_1);
    }
}

歡迎使用null布局管理器的奇妙陷阱之一

如果刪除布局管理器,則可以自動調整尺寸和位置,從而消除組件的任何可能性。

基本上發生的事情是將MyPanel添加到mainPanel且位置0x0的大小為0x0,所以什么也沒有開始顯示。

真正的解決方案是使用適當的布局管理器

不要自欺欺人。 在現代計算機系統領域中,管理組件的位置和大小,尤其是組件之間的關系是一項復雜的工作。 您必須能夠根據當前系統的字體,DPI,方向等來考慮每個組件的呈現方式,然后考慮如何影響共享同一容器的其他組件...您還必須監視所連接的組件層次結構中的更改...

這是布局管理器提供的工作... Swing是圍繞布局管理器的使用而設計的,您應該有一個很好的理由忽略它們...恕我直言

暫無
暫無

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

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