【问题标题】:how to put JLabel center of the JPanel [duplicate]如何将 JPanel 的 JLabel 中心放置 [重复]
【发布时间】:2012-06-29 08:57:03
【问题描述】:

可能重复:
Centering a JLabel on a JPanel

我想把 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);
        }
}

提前致谢

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 还可以考虑了解LayoutManager,而不是自己使用 setLocation/setSize/setBounds 定位组件

标签: java swing jpanel jlabel layout-manager


【解决方案1】:

使用带有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);
        }
    }

【讨论】:

  • GridLayout 更容易(更短)。另请参阅 this answer 了解其他两种布局。
  • 感谢 vivek 的快速回复,但我使用了borderlayout。它不在中心
  • 重复一遍,为了尽快获得更好的帮助,请发帖SSCCE
【解决方案2】:

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

name.setHorizontalAlignment(SwingConstants.CENTER);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多