代码之家  ›  专栏  ›  技术社区  ›  Dado Del

如何向扩展JPanel的类添加JLabel

  •  1
  • Dado Del  · 技术社区  · 9 年前

    正如标题所说,我想向扩展JPanel的类(在我的例子中,名为GamePanel)添加一个JLabel。我试过了

        public class GamePanel extends JPanel implements Runnable, KeyListener
        {
    
    /*Some of my instructions
    *
    */
           public void gamelabel()
           {
                 JLabel mylabel = new JLabel();
                 mylabel.setBounds(0, 0, 1280, 720);
                 GamePanel.add(mylabel);    //Here I'm getting an error message
           }
    
    /*Others instructions
    *
    */
        }
    

    所以我真的不知道怎么做,但我觉得这一定是一个简单的解决方案……尽管如此,我还是找不到。

    我该怎么做? 提前感谢。

    1 回复  |  直到 9 年前
        1
  •  5
  •   Madhawa Priyashantha    9 年前

    使用 this.add() 而不是 Gamelabel.add() .

    你不能打电话 Gamelabel.add() 因为要打电话 Gamelabel.add() 应该有一个静态方法 add() 在里面 Gamelabel 类,但Gamelabel具有继承的实例方法 add() 而不是静态方法。

       public void Gamelabel() {
            JLabel mylabel = new JLabel();
            mylabel.setBounds(0, 0, 1280, 720);
            mylabel.setVisible(true); //unnecessary 
            this.add(mylabel);
        }
    

    也可以使用布局管理器。在代码中不能使用 setBounds() 方法,因为面板布局为流(默认)。 setbounds 不使用布局管理器时用于绝对定位。所以请阅读如何使用 layout managers flow layout .

    而且 mylabel.setVisible(true); 是不必要的,因为 jlable 默认情况下可见 jframe .