扩展的 JPanel 破坏了 GridLayout

格言

我想像这样修改我的 JPanel:

public class Square extends JPanel {
    private Checker fromChecker;
    private int x;
    private int y;

    Square(int x, int y){
        this.x = x;
        this.y = y;
    }

    public int getX(){ return this.x; }
    public int getY(){ return this.y; }

    void setPossibleMoveChecker(Checker fromChecker){ this.fromChecker = fromChecker; }
    Checker getPossibleMoveChecker(){ return this.fromChecker; }
}

Square在这里打电话

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(Game.grid_size, Game.grid_size));

for(int x=1; x <= Game.grid_size; x ++){
    for(int y=1; y <= Game.grid_size; y ++) {
        Square square = new Square(x, y);

        // grid colour
        Color square_color = Game.grid1_colour;
        if((x + y) % 2 == 0){
            square_color = Game.grid2_colour;
        }
        square.setBackground(square_color);
        square.addMouseListener(new Mouse());
        panel.add(square);
    }
}

不幸的是,结果如下:

在此处输入图片说明

好像我改变了这条线:

Square square = new Square(x, y);

JPanel square = new JPanel();

它完全像:

在此处输入图片说明

充满鳗鱼的气垫船

您覆盖了两个关键的 JComponent 方法getX()getY(),这会干扰组件的放置,因为这是布局管理器用于放置组件的关键行为之一。

解决方案:重命名这些方法!

public class Square extends JPanel {
    private Checker fromChecker;
    private int column;
    private int row;

    Square(int column, int row){
        this.column = column;
        this.row = row;
    }

    public int getColumn(){ 
        return this.column; 
    }

    public int getRow(){ 
        return this.row; 
    }

    // ....

另一个支持组合而不是继承的原因,尤其是在处理具有许多潜在可重写方法的复杂类时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome扩展程序破坏了HTTPS

来自分类Dev

扩展GridLayout

来自分类Dev

TableColumnModelListener。JPanel revalidate()方法破坏了摆动元素的组成

来自分类Dev

Bash扩展的球形括号破坏了数组的初始化

来自分类Dev

Scala:蹦床功能的扩展语法破坏了尾递归

来自分类Dev

子目录结构破坏了C ++扩展的构建

来自分类Dev

Java GridLayout:南部JPanel覆盖中心JPanel?

来自分类Dev

JFrame、JPanel 和 Gridlayout 问题

来自分类Dev

公共类扩展了JPanel

来自分类Dev

公共类扩展了JPanel

来自分类Dev

Java中带有gridLayout的JPanel子类

来自分类Dev

使用GridLayout-如何设置JPanel大小?

来自分类Dev

如何使用GridLayout或GridBagLayout垂直填充JPanel?

来自分类Dev

强制使用GridLayout的JPanel更新/调整大小

来自分类Dev

Java中带有gridLayout的JPanel子类

来自分类Dev

强制使用GridLayout的JPanel更新/调整大小

来自分类Dev

如何使用GridLayout或GridBagLayout垂直填充JPanel?

来自分类Dev

GridLayout在JPanel中不起作用

来自分类Dev

使用GridLayout-如何设置JPanel大小?

来自分类Dev

.htaccess文件扩展名删除器代码破坏了网站表格

来自分类Dev

扩展的Wpf工具包:TableView.Theme在版本2.4中被破坏了?

来自分类Dev

扩展的Wpf工具包:TableView.Theme在版本2.4中被破坏了?

来自分类Dev

如何处理 Firefox 71.0 更新破坏了许多扩展和它自己的 UI?

来自分类Dev

Java:如何将JPanel嵌套在GridLayout中?

来自分类Dev

在带有GridLayout的JPanel中,矩形不垂直居中

来自分类Dev

无法在GridLayout / FlowLayout中正确设置BoxLayout(JPanel)

来自分类Dev

奇怪的摇摆错误:设置GridLayout参数会使我的JPanel消失

来自分类Dev

jpanel无法进行7行2列的gridlayout

来自分类Dev

使用JPanel扩展类设置背景

Related 相关文章

  1. 1

    Chrome扩展程序破坏了HTTPS

  2. 2

    扩展GridLayout

  3. 3

    TableColumnModelListener。JPanel revalidate()方法破坏了摆动元素的组成

  4. 4

    Bash扩展的球形括号破坏了数组的初始化

  5. 5

    Scala:蹦床功能的扩展语法破坏了尾递归

  6. 6

    子目录结构破坏了C ++扩展的构建

  7. 7

    Java GridLayout:南部JPanel覆盖中心JPanel?

  8. 8

    JFrame、JPanel 和 Gridlayout 问题

  9. 9

    公共类扩展了JPanel

  10. 10

    公共类扩展了JPanel

  11. 11

    Java中带有gridLayout的JPanel子类

  12. 12

    使用GridLayout-如何设置JPanel大小?

  13. 13

    如何使用GridLayout或GridBagLayout垂直填充JPanel?

  14. 14

    强制使用GridLayout的JPanel更新/调整大小

  15. 15

    Java中带有gridLayout的JPanel子类

  16. 16

    强制使用GridLayout的JPanel更新/调整大小

  17. 17

    如何使用GridLayout或GridBagLayout垂直填充JPanel?

  18. 18

    GridLayout在JPanel中不起作用

  19. 19

    使用GridLayout-如何设置JPanel大小?

  20. 20

    .htaccess文件扩展名删除器代码破坏了网站表格

  21. 21

    扩展的Wpf工具包:TableView.Theme在版本2.4中被破坏了?

  22. 22

    扩展的Wpf工具包:TableView.Theme在版本2.4中被破坏了?

  23. 23

    如何处理 Firefox 71.0 更新破坏了许多扩展和它自己的 UI?

  24. 24

    Java:如何将JPanel嵌套在GridLayout中?

  25. 25

    在带有GridLayout的JPanel中,矩形不垂直居中

  26. 26

    无法在GridLayout / FlowLayout中正确设置BoxLayout(JPanel)

  27. 27

    奇怪的摇摆错误:设置GridLayout参数会使我的JPanel消失

  28. 28

    jpanel无法进行7行2列的gridlayout

  29. 29

    使用JPanel扩展类设置背景

热门标签

归档