簡體   English   中英

將JPanel放在JFrame內

[英]Place JPanel inside of a JFrame

我已經在這里呆了幾個小時了,我很沮喪。 我有這段代碼,它在JFrame中添加了一個JPanel,問題是當我將Frame設置為Free Design它沒有顯示在Frame中。 當我將框架設置為Border Layout ,代碼可以正常工作。 我想做的就是讓它與Free Design ,在這里我可以隨意放置和調整JPanel的大小。 以下是將其放在框架中的以下代碼。

        canvas = new Canvas();
        canvas.setVisible(true);
        canvas.setImage(file);
        GroupLayout canvasLayout = new GroupLayout(canvas);
        canvas.setLayout(canvasLayout);
        canvas.setPreferredSize(new Dimension(100, 100));
        //canvas.setSize(200,200);
        //canvas.setPreferredSize(null);
        add(canvas);
        revalidate();

當我使用免費設計模式時,我會缺少什么? 這是構建布局的代碼:

private void initComponents() {

    jInternalFrame1 = new javax.swing.JInternalFrame();

    jInternalFrame1.setVisible(true);

    javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
    jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
    jInternalFrame1Layout.setHorizontalGroup(
        jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );
    jInternalFrame1Layout.setVerticalGroup(
        jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("PocketShop");
    setName("main");

    pack();
}

放棄JInternalFrame

JInternalFrame適用於JDesktopPane中的孩子。 Windows中的一種窗口,即所謂的MDI(多文檔界面),而不是SDI(單文檔界面)。

使用JPanel而不是Canvas

Canvas是舊的本機平台AWT,一個組件,Swing的JPanel和一個JComponent。 您可以在那里覆蓋paintComponent。

對於Free Design布局,我將使用NetBeans IDE中的GUI編輯器。 我願意,所以無法進一步幫助您。

如果可能,請勿使用revalidate。


如果您手動添加Canvas,請嘗試添加JPanel,並將new Canvas()canvas設置為自定義創建代碼。

暫無
暫無

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

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