2015-02-11 31 views
1

當添加與MigLayout容器的JSlider,我發現,滑塊底端對齊,並增加了一些額外的空間:MigLayout對齊JSlider的錯誤

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

} 

Slider aligned wrong in MigLayout

做了測試在版本4.2和5.0上,在任何標準外觀和感覺上(在Windows中)以及物質。任何時候都會發生。

這似乎已被要求in the MigLayout forums,但代碼發佈的作品,所以沒有得到更多的答案。我試圖在那裏發佈報告,但似乎被禁用,作者寫道他們將檢查StackOverflow以提供支持。

回答

2

該空間不存在於MigLayout版本4.3中。我得到它在 MigLayout版本5.1。

這可能與JSpinner可能顯示值(僅GTK外觀)或標籤有關。也許MigLayout在計算微調器的邊界時考慮可能的標籤。以下截圖是使用MigLayout 5.1進行的。

第一屏幕截圖示出了JSpinner用標籤:

JSlider with labels

第二屏幕截圖示出了具有顯示 值上GTK LAF一個JSpinner

JSpinner in GTK laf

如果我們取出價值GTK拉夫與

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

那麼我們得到這個screnshot:

enter image description here

+0

優秀。 我沒有意識到版本4.3,因爲它從來沒有離開過快照狀態,並且在5.1版上看過這個活動(上週有5個快照),所以我希望他們在這個版本上增加了一個無懈可擊的修正。 – 2015-02-25 14:37:53