java - 如何使 BoxLayout 正确左对齐?
问题描述
我创建了一个Box
包含 aJLabel
和 aJScrollPane
的 a JTextArea
。但是,左侧总是有一些空间JLabel
:
完整的演示代码:
import java.awt.*;
import javax.swing.*;
public class BoxAlignmentTest extends JFrame {
public static void main(String[] args) {
BoxAlignmentTest test = new BoxAlignmentTest();
test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
test.setSize(500, 200);
test.setVisible(true);
}
public BoxAlignmentTest() throws HeadlessException {
Box box = Box.createVerticalBox();
setContentPane(box);
JLabel label = new JLabel("This label isn't fully left-aligned.");
label.setOpaque(true);
label.setBackground(Color.orange);
label.setAlignmentX(Component.LEFT_ALIGNMENT); // Set left alignment
box.add(label);
box.add(new JScrollPane(new JTextArea("This is a text area.")));
}
}
解决方案
如何使用 BoxLayout(Java™ 教程 > 使用 JFC/Swing 创建 GUI > 在容器中布置组件)
X 对齐不仅影响组件相对于彼此的位置,还影响组件的位置(作为组)在他们的容器中。
出于这个原因,有必要setAlignmentX(Component.LEFT_ALIGNMENT)
不仅为,JLabel
而且为JScrollPane
。
import java.awt.*;
import javax.swing.*;
public class BoxAlignmentTest2 extends JFrame {
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
BoxAlignmentTest2 test = new BoxAlignmentTest2();
test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
test.setSize(500, 200);
test.setVisible(true);
});
}
public BoxAlignmentTest2() throws HeadlessException {
JLabel label = new JLabel("This label isn't fully left-aligned.");
label.setOpaque(true);
label.setBackground(Color.orange);
label.setAlignmentX(Component.LEFT_ALIGNMENT); // Set left alignment
JScrollPane scroll = new JScrollPane(new JTextArea("This is a text area."));
scroll.setAlignmentX(Component.LEFT_ALIGNMENT); // <- add
Box box = Box.createVerticalBox();
box.add(label);
box.add(scroll);
add(box); // = getContentPane().add(box, BorderLayout.CENTER);
}
}
推荐阅读
- amazon-web-services - 使用 Step Functions 运行 AWS EMR 集群
- sql - SQL如何将数组转换为在IN子句中使用的值
- python - 是什么导致训练准确率和 epoch 之间的损失大幅跃升?
- reactjs - Material-ui stepper 用线连接点
- html - 火狐漏洞?在 img 上得到了不需要的(和未编码的)笔画(在其他浏览器上工作)
- c - 如何将整数的输入限制为仅 2-12?
- r - 如何遍历重复的数据集以获得每月总数?
- java - Hashmap containsKey() 方法检查
- amazon-web-services - JupyterHub (v0.8.2) Github 授权不起作用
- c++ - 解决没有虚拟继承的菱形问题