gpt4 book ai didi

java - 如何使 BoxLayout 正确左对齐?

转载 作者:行者123 更新时间:2023-11-30 01:44:19 25 4
gpt4 key购买 nike

我创建了一个 Box,其中包含一个 JLabel 和一个带有 JTextAreaJScrollPane。然而,JLabel 左侧始终有一些空格:

Jlabel not fully left-aligned

完整演示代码:

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.")));
}
}

最佳答案

How to Use BoxLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
The X alignments affect not only the components' positions relative to each other, but also the location of the components (as a group) within their container.

因此,不仅对于 JLabel,而且对于 JScrollPane 都需要 setAlignmentX(Component.LEFT_ALIGNMENT)

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);
}
}

关于java - 如何使 BoxLayout 正确左对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com