Java 继承JLabel的我的类赢得了';不显示,但如果我将类型更改为JLabel,它会显示

Java 继承JLabel的我的类赢得了';不显示,但如果我将类型更改为JLabel,它会显示,java,swing,Java,Swing,好的,我做了一个叫做Tile的课程。这个类扩展了JLabel public Tile() { super(); } 应该和JLabel一样,不是吗? 但是当我试图在代码中使用它时,它并没有显示在正确的位置。如果我调用Tile的边界,它将给出我期望的结果,但它不在该位置。 如果我在调用tile的地方使用JLabel,那么使用了tile Container cPane = getContentPane(); for(int x = 0;x<8;x++) {

好的,我做了一个叫做Tile的课程。这个类扩展了JLabel

public Tile()
{
    super();
}
应该和JLabel一样,不是吗? 但是当我试图在代码中使用它时,它并没有显示在正确的位置。如果我调用Tile的边界,它将给出我期望的结果,但它不在该位置。 如果我在调用tile的地方使用JLabel,那么使用了tile

Container cPane = getContentPane();

    for(int x = 0;x<8;x++)
    {
        for(int y = 0;y<8;y++)
        {
            grid[x][y] = new Tile();
            grid[x][y].setBorder(BorderFactory.createLineBorder(Color.black));
            grid[x][y].setBounds(50*x,50*y,100,100);
            getContentPane().add(grid[x][y]);
            cPane.add(grid[x][y]);
        }
    }
Container cPane=getContentPane();

对于(intx=0;xAha),我对你的问题的评论是正确的--


让我猜猜:您已经重写了getX()和getY()方法,但没有意识到您的方法是重写的,可能是吗

实际上,您正在重写
getX()
getY()
。这些方法是JComponent的关键方法,布局管理器和GUI使用它们设置组件的位置。如果重写,您的组件在GUI上的行为将完全混乱

除非必要,否则这是避免扩展像组件这样的复杂类的一个原因


例如,您可以创建一个小工厂方法来创建tile/jlabel,并且您可以使用一个非GUI模型类来支持组件,该类保存GUI的所有智能。这方面的一个示例类似于Conway的Game of Life,其中存在一个逻辑网格LifeSquares以及一个单独的GUI,该GUI比逻辑网格的“视图”以及将用户交互(如鼠标按下)传递给“控件”类的连线。

啊哈,我对你的问题的评论是正确的--


让我猜猜:您已经重写了getX()和getY()方法,但没有意识到您的方法是重写的,可能是吗

实际上,您正在重写
getX()
getY()
。这些方法是JComponent的关键方法,布局管理器和GUI使用它们设置组件的位置。如果重写,您的组件在GUI上的行为将完全混乱

除非必要,否则这是避免扩展像组件这样的复杂类的一个原因


例如,你可以创建一个小工厂方法来创建你的tile/JLabel,你可以用一个非GUI模型类来支持组件,该类保存GUI的所有智能。这方面的一个例子类似于Conway的《生活游戏》,其中存在一个逻辑网格生活区以及一个单独的GUI,它只不过是一个逻辑网格的“视图”,以及将用户交互(如鼠标按下)传递到“控件”类的连线。

我假设您使用的是
null
布局……让我猜一下:您已经覆盖了
getX()
getY()在没有意识到你的方法被重写的情况下,也许,不管怎样,考虑向我们展示更多的代码和关于你的问题的更多信息。如果你有能力制作和发布一个,那就很完美了。你可以发布所有的<代码>瓦片< /代码>和任何其他在容器上设置属性的代码(以及它的内容窗格)。,或者一个完整但最小的测试来显示这种行为?哦,天哪,我确实重写了getX和Y方法。我怎么能忘记同龄人的恐怖故事。谢谢大家!热爱这个社区。@HovercraftFullOfEels哇,好主意。我假设你使用的是
null
布局……让我猜一下:你已经重写了
getX()
getY()在没有意识到你的方法被重写的情况下,也许,不管怎样,考虑向我们展示更多的代码和关于你的问题的更多信息。如果你有能力制作和发布一个,那就很完美了。你可以发布所有的<代码>瓦片< /代码>和任何其他在容器上设置属性的代码(以及它的内容窗格)。,或者一个完整但最小的测试来显示这种行为?哦,天哪,我确实覆盖了getX和Y方法。我怎么能忘记同龄人的恐怖故事。谢谢大家!热爱这个社区。@HovercraftFullOfEels哇,好电话。