2010-05-02 3 views
8

Ручка на вертикальном JSlider на моей машине с Windows 7 (с естественным внешним видом) действительно очень маленькая в обоих направлениях. Не только тощий, но и короткий. alt text http://img101.imageshack.us/img101/8946/verticalsliderproblemwi.jpgОшибка Java Swing для рендеринга Windows 7?

Может кто-нибудь подтвердить это? Должен ли я сообщить об этом? Если да, то где? Благодаря!

Вот код примера программы (на скриншоте):

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JSlider; 
import javax.swing.SwingConstants; 
import javax.swing.UIManager; 


public class SliderTest 
{ 
    public static void main(String[] args) 
    { 
     // Set the look and feel to that of the system 
     try 
     { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } 
     catch (Exception e) 
     { System.err.println(e); } 


     // Launch the GUI from the event dispatch thread 
     javax.swing.SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       JFrame window = new JFrame(); 
       window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

       JPanel contentPane = new JPanel(); 
       contentPane.add(new JSlider(SwingConstants.HORIZONTAL)); 
       contentPane.add(new JSlider(SwingConstants.VERTICAL)); 

       window.setContentPane(contentPane); 
       window.pack(); 
       window.setLocationRelativeTo(null); // Center window 
       window.setVisible(true); 
      } 
     }); 
    } 
} 
+0

Не уверен, что это ошибка, но я вижу то же самое. – foxwoods

+0

Я думаю, что стоит сделать видимым для Sun, er, Oracle; P Я думаю, что я опубликую что-то на bugs.sun.com (я думаю, что это место для вас?). – Vimes

+0

Выглядит нормально на Mac OS X 10.5.8 Java 1.6 для всех установленных L & Fs. Это артефакт «FlowLayout», по умолчанию для «JPanel»? – trashgod

ответ

4

Во-первых, это происходит в Windows Vista тоже. Похоже, что этот слайдер пытается взять как можно меньше места. Если вы хотите, чтобы более крупный JSlider использовал JSlider.setPaintTicks. Поэтому вам необходимо добавить следующее:

JSlider vertical = new JSlider(SwingConstants.VERTICAL); 
vertical.setPaintTicks(true); 
contentPane.add(vertical); 

Это должно сделать трюк.

Смежные вопросы