将JLabel放在JPanel上居中

我正在使用NetBeans GUI构建器来处理我的布局(我对LayoutManagers很糟糕),并试图放置一个简单的JLabel,以使其始终(水平)居于其父JPanel内部。理想情况下,即使调整了JPanel的大小,这也将保持正确,但是,如果这是一个疯狂的编码,比第一次创建JPanel时居中就足够了。

我自己尝试处理布局已经很糟糕了,但是由于NetBeans GUI Builder自动生成不可变的代码,因此我无法弄清楚如何进行居中,而且我也无法在线找到任何东西来帮助我。

感谢任何能够指引我正确方向的人!

回答:

以下是使组件居中的四种方法:

import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

class CenterComponent {

public static JLabel getLabel(String text) {

return getLabel(text, SwingConstants.LEFT);

}

public static JLabel getLabel(String text, int alignment) {

JLabel l = new JLabel(text, alignment);

l.setBorder(new LineBorder(Color.RED, 2));

return l;

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

JPanel p = new JPanel(new GridLayout(2,2,4,4));

p.setBackground(Color.black);

p.setBorder(new EmptyBorder(4,4,4,4));

JPanel border = new JPanel(new BorderLayout());

border.add(getLabel(

"Border", SwingConstants.CENTER), BorderLayout.CENTER);

p.add(border);

JPanel gridbag = new JPanel(new GridBagLayout());

gridbag.add(getLabel("GridBag"));

p.add(gridbag);

JPanel grid = new JPanel(new GridLayout());

grid.add(getLabel("Grid", SwingConstants.CENTER));

p.add(grid);

// from @0verbose

JPanel box = new JPanel();

box.setLayout(new BoxLayout(box, BoxLayout.X_AXIS ));

box.add(Box.createHorizontalGlue());

box.add(getLabel("Box"));

box.add(Box.createHorizontalGlue());

p.add(box);

JFrame f = new JFrame("Streeeetch me..");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setContentPane(p);

f.pack();

f.setLocationByPlatform(true);

f.setVisible(true);

}

});

}

}

以上是 将JLabel放在JPanel上居中 的全部内容, 来源链接: utcz.com/qa/432393.html

回到顶部