2011-08-24 16 views
9

Come si modifica solo la larghezza o l'altezza di un componente che richiede un oggetto Dimension? Attualmente lo faccio in questo modo:Dimensione, Modifica solo della larghezza/altezza

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

Ma ho la sensazione che lo sto facendo nel modo sbagliato. Qual è il modo migliore per avvicinarsi a questo se c'è un modo migliore?

+5

il torto di base che si sta facendo è chiamare setPreferredSize con qualsiasi dimensione ;-) Interferirai con qualsiasi calcolo dell'indice di dimensioni interne su una parte del componente. Semplicemente: non, mai e poi mai. Invece, utilizzare un LayoutManager decente. – kleopatra

risposta

2

Ho finito per farlo come diceva Kleopatra. Non modificare la preferenza preferita ma lasciare che il gestore di layout esegua il lavoro. Poiché questo è il modo corretto per cambiare la dimensione di un componente.

+2

non ha potuto resistere al commento, il mio compilatore di grammatica sta lanciando un errore 'SentenceFragment' (ma terrò le mie mani sporche dal tuo post) :) – Ben

13

Prima di tutto non si modifica la dimensione di JButton. Stai specificando la dimensione preferita desiderata, che può essere eventualmente applicata al tuo JButton a seconda del LayoutManager del componente in cui è inserito.

Per ciò che riguarda l'uso dell'oggetto Dimension va bene. Alla fine puoi accedere direttamente al campo Dimensione:

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

ma è praticamente la stessa cosa.

+0

@Patrick: forse non ho capito la tua domanda. – Heisenbug

+0

Hai apportato una modifica alla tua domanda e ora risponde alla domanda. Non riesco a rimuovere il commento precedente, quindi ti ringrazio per la tua nuova risposta. – Patrick

-1

Si può fare in questo modo:

jbutton.getPreferredSize().height = 100; 

Prendere in considerazione che la proprietà PreferredSize viene utilizzata solo da alcuni gestori di layout.

+0

Non è possibile eseguire questa operazione perché getPreferredSize() può restituire una copia della dimensione preferita. – ceklock

Problemi correlati