|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
[java]Layout
vi risulta che per utilizzare il metodo oggetto.setLocation(x,y) bisona preventivamente chiamare il metodo setLayout(null);
|
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La questione è un po' più complicata.
Anche il LayoutManager invoca setLocation. Per la verità usa setBounds ma è la stessa cosa (molto tecnico ![]() Se invochi setLocation su un componenete gestito da un LayoutManager lo spostamento potrebbe essere annullato dalla successiva invocazione di revalidate() sul contenitore, che causa una nuova computazione delle posizione e delle dimensioni dei componenti. Io scrivo setLocation, il componente si sposta, viene invocato revalidate(), il LayoutManager sposta il componente dov'era prima. Non è detto che capiti perchè il LayoutManager potrebbe avere una copia cache delle posizioni non influenzata da setLocation. E' una delle molte cose che può fare. setLocation potrebbe avere l'effetto desiderato anche in presenza di un LayoutManager. Ma "potrebbe" non va bene. Già di certezze ne abbiamo poche... Per questo l'uso di setLocation è subordinato all'impostazione di "null" come LayoutManager. Così facendo sai per certo che l'impostazione della posizione non sarà sovrascritta in alcun caso: manca chi potrebbe farlo. Naturalmente non si usa nè null come LayoutManager nè setLocation o setBounds a meno che non si stia scrivendo un LayoutManager e, anche in quel caso, i valori che useresti sarebbero relativi alle dimensioni minime, preferite massime e correnti del componente rispetto allo spazio disponibile e alle dimensioni minime, massime, preferite e correnti degli altri componenti, più il bordo, l'orientamento e via dicendo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
quindi consigli di lasciar perder il setLocation?
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
In senso assoluto preferisco evitare di non consigliare perchè, sai, c'è sempre quel caso eccezionale che spunta fuori venti secondi dopo che hai detto "mai".
![]() Diciamo che per la mia esperienza personale e per ragioni tecniche l'uso di setLocation dovrebbe essere considerato come l'ultima spiaggia dopo l'ultima delle ultime. Non perchè è possibile che non funzioni, invochi una volta setLayout(null) e il setLocation funzionerà di certo, ma per questioni di portabilità del programma persino all'interno dello stesso sistema se l'utente decida di cambiare alcuni attributi di visualizzazione (tipicamente è la mutazione della dimensione del font a mandare in vacca persino le posizioni più accuramente studiate).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:18.