MigLayout 对齐 JSlider 错误

MigLayout aligns JSlider wrong

使用 MigLayout 在容器中添加 JSlider 时,我发现滑块与底部对齐并添加了一些额外的 space:

import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import net.miginfocom.swing.MigLayout;

public class SliderAlignOnMigLayout {

    public static void main(String... args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new MigLayout("debug"));
        contentPane.add(new JLabel("Slider:"));
        contentPane.add(new JSlider());

        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

}

已在版本 4.2 和 5.0 上对任何标准外观(在 Windows 中)以及 Substance 进行了测试。随时发生。

这似乎已被问到 in the MigLayout forums,但代码 posted 有效,因此没有得到进一步的答案。我曾尝试 post 那里的报告,但似乎被禁用了,作者写道,他们将检查 Whosebug 以提供支持。

MigLayout 4.3 版中没有 space。我正在把它放进去 MigLayout 版本 5.1.

这可能与 JSpinner 可能显示值(仅 GTK 外观)或标签有关。在计算微调器的边界时,MigLayout 可能会考虑可能的标签。以下屏幕截图是使用 MigLayout 5.1 截取的。

第一个屏幕截图显示 JSpinner 带有标签:

第二个屏幕截图显示 JSpinner GTK laf 上的值:

如果我们使用

删除 GTK laf 上的值

UIManager.put("Slider.paintValue", false);

然后我们得到这个截图: