使多行复选框上的复选框与第一行对齐,而不是中心

Make the checkbox on a mult-line JCheckbox align with the first line, not the center

我是 运行 一个将多个不同的 JCheckBox 添加到 JFrame 上的 GroupLayout JPanel 的程序,我遇到了一个小问题。 使用以下代码,程序将成功制作多行 JCheckBox,但复选框在 4 行的中心垂直对齐,我希望它与第一行对齐:

    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
    import java.io.*;
    import javax.swing.*; 
    import javax.swing.JCheckBox;
    import javax.swing.GroupLayout;

    public class MainClass {

    public static void main(String[] args) {
            JFrame f = new JFrame("Survey");
            JPanel p = new JPanel();

            GroupLayout layout = new GroupLayout(p);
            GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
            GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();

            p.setLayout(layout);

            JCheckBox example = new JCheckBox();
            example.setText("<html><body>lorum ipsum lorum ipsum lorum ipsum lorum ipsum lorum ipsum");

            hGroup.addComponent(example, 0,150,150);
            vGroup.addComponent(example);

            layout.setHorizontalGroup(hGroup);
            layout.setVerticalGroup(vGroup); 
            f.add(p);
            f.setVisible(true);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);
            f.setExtendedState(f.getExtendedState() | JFrame.MAXIMIZED_BOTH);
        }  
    }

输出:

我希望它看起来像这样(请注意我糟糕的图像编辑技巧以及它随机出现不同的灰色阴影这一事实):

如您所见,我使用了 GroupLayout,如果可能的话,我想保留它,因为我想将它应用到更大的程序中,而重构我的整个布局并不理想。 谢谢

看看 AbstractButton API.

有几种方法可以让您控制文本相对于图标的位置。

例如:

JCheckBox example = new JCheckBox();
example.setText("<html><body>lorum ipsum lorum ipsum lorum ipsum lorum ipsum lorum ipsum");
example.setVerticalTextPosition(SwingConstants.TOP);