use*_*678 5 java swing layout-manager boxlayout
我想保持我的两个 JLabel 文本左对齐,同时将我的 boxLayout 放在 JFrame 的中心。
我在我的 boxlayout 面板上尝试了 setAlignmentX(CENTER_ALIGNMENT) 但它没有将我的 boxlayout 放在中心。
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class GuiTest extends JFrame {
private static final long serialVersionUID = 1L;
private JLabel jLabelOne = new JLabel();
private JLabel jLabelTwo = new JLabel();
private JPanel panel = new JPanel();
private BoxLayout boxLayout = new BoxLayout(panel,BoxLayout.Y_AXIS);
public GuiTest() {
jLabelOne.setAlignmentX(LEFT_ALIGNMENT);
jLabelTwo.setAlignmentX(LEFT_ALIGNMENT);
jLabelOne.setText("This is text one");
jLabelTwo.setText("This is text two");
panel.setLayout(boxLayout);
panel.add(jLabelOne);
panel.add(jLabelTwo);
panel.setAlignmentX(CENTER_ALIGNMENT);
add(panel);
pack();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(1024,768);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]) {
new GuiTest();
}
}
Run Code Online (Sandbox Code Playgroud)
这不会实现我相信的任何目标:
panel.setAlignmentX(CENTER_ALIGNMENT);
Run Code Online (Sandbox Code Playgroud)
因为您要将面板添加到 JFrame 的 contentPane(一个使用 BorderLayout 的容器),并且实际上是以默认方式添加它,即 BorderLayout.CENTER。
考虑为 contentPane 提供 GridBagLayout,并以默认方式添加面板 JPanel,这应该使其居中。仅当其首选大小小于 JFrame 的 contentPane 时才会看到此情况。
| 归档时间: |
|
| 查看次数: |
13372 次 |
| 最近记录: |