本文介绍了Java的:在JPanel的垂直对齐的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想垂直对齐(中心)两者的JLabel内的一个JPanel的。
I am trying to vertically align (center) both JLabels inside one JPanel.
JPanel panel = new JPanel();
panel.setPreferredSize(size);
JLabel label1 = new JLabel(icon);
JLabel label2 = new JLabel("text");
panel.add(label1);
panel.add(label2);
我用setAligmentY(),但没有成功都试过了。这两个标签始终显示在JPanel的顶部。
I have tried using setAligmentY() with no success. Both labels always appear on the top of JPanel.
UPD:标签应位于旁边彼此喜欢用的FlowLayout,但在JPanel的中间
UPD: Labels should be located next to each other like using FlowLayout, but in the middle of the JPanel.
推荐答案
编辑:
使用一个GridBagLayout的使用默认的约束。这里是一个小的演示code:
Use a GridBagLayout with the default constraints. Here is a small demo code:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TestVerticalAlignement {
protected void initUI() {
final JFrame frame = new JFrame();
frame.setTitle("Test vertical alignement");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
JLabel label1 = new JLabel("label1");
JLabel label2 = new JLabel("label2");
panel.add(label1, gbc);
panel.add(label2, gbc);
frame.add(panel);
frame.setSize(300, 300);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestVerticalAlignement().initUI();
}
});
}
}
这篇关于Java的:在JPanel的垂直对齐的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!