-2

可能重复:
在 JPanel 上居中 JLabel

我想把 JLabel 放在 JPanel 的中心。我使用了下面的代码,所以你能告诉我。这段代码有什么问题?代码 :

public class ColoredRect extends JPanel{

      public double x, y, width, height;  
      public JLabel name;

      public ColoredRect(double x,double y,String label)
      {

          this.x = x;
          this.y = y;
          this.width = 100;
          this.height =40;

          setLocation((int)x,(int)y);
          setSize((int)width,(int)height);
          setBackground(Color.red);

          name = new JLabel(label,JLabel.CENTER);
          name.setForeground(Color.BLACK);
          name.setVisible(true);
          name.setSize(20,20);
          name.repaint();
          add(name);
        }
}

提前致谢

4

2 回答 2

2

使用带有 center 属性的 BorderLayout,如果 JLabel 是容器中唯一的组件(即此处的 JPanel),则如果使用 BorderLayout,则默认为中心。最好使用由 netbeans 团队在 2005 年开发的 GroupLayout。

例如:

class pan extends JPanel{

        JLabel label = new JLabel("Name");

        public void go(){

            this.setLayout(new BorderLayout());
            this.add(label,BorderLayout.CENTER);
        }
    }
于 2012-06-29T09:05:07.273 回答
1

您也可以使用水平对齐方式:

name.setHorizontalAlignment(SwingConstants.CENTER);
于 2012-06-29T10:01:29.357 回答