簡體   English   中英

Java,從另一個 class 到 jframe 添加到 jpanel

[英]Java, add to jpanel from another class to jframe

我有兩個類,如下所示:

public class Board extends JFrame {

private JFrame frame;

public Board() {
    JFrame frame = new JFrame();
    frame.add(this.createContentPane());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

public JPanel createContentPane (){
    
    JPanel totalGUI = new JPanel();
    JPanel mainPanel = new JPanel(new GridLayout(3, 3));

    JPanel red = createSquareJPanel(Color.red, 50);
    JPanel blue = createSquareJPanel(Color.blue, 50);
  
    mainPanel.add(red);
    mainPanel.add(blue);

    totalGUI.add(mainPanel);
    totalGUI.setOpaque(true);
    return totalGUI;
}

private JPanel createSquareJPanel(Color color, int size)
{
    Rectangle rect = new Rectangle(color, size);
    return rect;
}
}

public class Rectangle extends JPanel {

    public Rectangle(Color color, int size) {
        this.setBackground(color);
        this.setMinimumSize(new Dimension(size, size));
        this.setMaximumSize(new Dimension(size, size));
        this.setPreferredSize(new Dimension(size, size));

    }
}

問題是當方法“createSquareJPanel”創建矩形object時,gridlayout中只出現了2的第一個元素。 所以我只看到紅色矩形。

如果我將來自 Rectangle class 的代碼放入 createSquareJPanel 並在這里創建一個 JPanel,那么它會按預期工作。 我不明白為什么這段代碼只出現一個元素。

你的代碼對我來說很好。 我已經重新編寫它以進行測試,但它是一個克隆。 https://github.com/amaurylrd/stackoverflow-jpanel

此外,class 矩形不應該出現在 Board 文件中,但我認為你可以在這里發布。 我想知道為什么這個 class 擴展了 JFrame 但也有 JFrame 屬性。 順便說一句,那些是正方形,對吧?

我想讓你看到,totalGUI 也幾乎沒用,你可以使用默認的 contentPane 或你創建的 mainPanel,它單獨工作正常。 默認布局是 FlowLayout 的事實。

暫無
暫無

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

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