[英]Java add a jpanel in a jtabbed pane in a jframe from another class file
[英]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.