2011-08-22 17 views
10

W jaki sposób można skonfigurować rozmiar kciuka dla JSlider?Ustawianie rozmiaru kciuka JSlider

Przy wartościach domyślnych i zakresie dla JSlider z 256, kciuk ma tylko kilka pikseli szerokości, co sprawia, że ​​trudno jest kontrolować za pomocą myszy.

używam Windows 7 wygląd i suwak wygląda następująco:

Screenshot of slider

Włączanie paintTicks z dużych i małych odstępów kleszcza od 0 daje lepszy (choć nie jest to korzystne) wyświetlacz:

Screenshot of slider with paintTicks enabled

pożądana wyświetlacz jest pokazany na poniższym rysunku - pochodzi z natywnej aplikacji systemu Windows 7:

Screenshot of native slider

+1

Jak to zrobiłeś - ten chudy? –

+0

Jest to poziomy JSlider z min i maksimum odpowiednio 0 i 255, nic specjalnego. Kiedy zmniejszam zakres od 0 do 16, kciuk ma ten sam rozmiar. Kiedy zmieniam mniejszy lub większy odstęp między znakami, kciuk ma taki sam rozmiar. Więc nie wiem, dlaczego jest tak chuda. –

+2

@Andrew Cecil, Byłoby fajnie, gdyby dołączyć zrzut ekranu. : D – mre

Odpowiedz

2

Można spróbować dostosowywania JSlider wyglądać i czuć się jak następuje:

UIDefaults defaults = UIManager.getDefaults(); 
defaults.put("Slider.thumbHeight", HEIGHT_AS_INTEGER); // change height 
defaults.put("Slider.thumbWidth", WIDTH_AS_INTEGER); // change width 

referencyjny:

Ważne jest, aby pamiętać, że te zmiany będą dotyczy wszystkich JSlider wystąpień, które mogą spowodować, że takie podejście będzie niepożądane.

+3

W którym momencie należy to zrobić? Przed ustawieniem wyglądu i stylu? Przed utworzeniem komponentów "JSlider"? Do tej pory nie udało mi się uzyskać tego efektu. –

+1

@Andrew, Dobre pytanie. Jeszcze nie wiem. – mre

+0

Wygląda na to, że klucze UID są wywoływane tylko przez Nimbus/Synth L & F (przynajmniej w Oracle Java) –

2

Zależy to od SliderUI, który może mieć twarde zakodowane rozmiary. Jeśli nie, skorzystaj z sugestii mre, jeśli chcesz mieć taki sam rozmiar kciuka dla wszystkich suwaków.

Zamiast ustawiać wartości domyślne interfejsu użytkownika, który ich używa, można zdefiniować inny interfejs dla specjalnego suwaka (na przykład myslider.setUI(new MyCustonSliderUI())), ale należy pamiętać, że ma on swoje wady.

Powiązane problemy