2011-08-24 24 views
9

Jak zmienić szerokość lub wysokość elementu, który wymaga obiektu Dimension? Obecnie robię to tak:Wymiar, zmieniając tylko szerokość/wysokość

jbutton.setPreferredSize(new Dimension(button.getPreferredSize().width, 100)); 

Ale mam wrażenie, że robię to w niewłaściwy sposób. Jaki jest najlepszy sposób podejścia do tego, jeśli jest lepszy sposób?

+5

Podstawowym błędem jest wywołanie metody setPreferredSize z jakimkolwiek wymiarem ;-) Będziesz ingerować w obliczenia podpowiedzi dotyczących wielkości wewnętrznej części komponentu. Po prostu: nie, nigdy. Zamiast tego użyj przyzwoitego menedżera LayoutManager. – kleopatra

Odpowiedz

2

Zrobiłem to tak, jak powiedział Kleopatra. Nie zmieniając preferowanej wielkości, ale pozwalając menedżerowi układu wykonać zadanie. Ponieważ jest to właściwy sposób na zmianę rozmiaru komponentu.

+2

Nie mogłem się oprzeć komentowaniu, mój kompilator gramatyki rzuca błąd 'SentenceFragment' (ale będę trzymać moje brudne ręce z twojego postu) :) – Ben

13

Po pierwsze nie zmieniasz wymiaru JButton. Podajesz pożądany preferowany rozmiar, który można ostatecznie zastosować do twojego JButton w zależności od LayoutManager komponentu, do którego jest wstawiony.

Za to, co dotyczy użycia obiektu Dimension, jest w porządku. Docelowo możesz uzyskać dostęp bezpośrednio do pola Wymiar:

Dimension d = button.getPreferredSize(); 
d.height = 10; 
jbutton.setPreferredSize(d); 

, ale to prawie to samo.

+0

@Patrick: może nie zrozumiałem twojego pytania. – Heisenbug

+0

Dokonałeś edycji swojego pytania i teraz odpowiada na pytanie. Wygląda na to, że nie mogę usunąć poprzedniego komentarza, więc dziękuję ci za twoją nowszą odpowiedź. – Patrick

-1

Można to zrobić tak:

jbutton.getPreferredSize().height = 100; 

uwzględniające że nieruchomość preferredSize jest używany tylko przez niektórych menedżerów układu.

+0

Nie można tego zrobić, ponieważ getPreferredSize() może zwrócić kopię preferowanego rozmiaru. – ceklock