繁体   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