2009-12-19 2 views
7

Questo mi sta facendo impazzire. Quando imposto una dimensione appropriata per la mia finestra in modalità progettazione, ignora questa dimensione e usa qualcos'altro quando compilo ed eseguo. Anche se fisso il minimoSize e preferisciSize lo ignoro solo ... Perché? Come posso impostare la mia taglia?NetBeans (Java Swing): Imposta dimensione finestra

+0

Stai facendo questo trascinando con il mouse o stai impostando una proprietà? –

risposta

6

Anche se hai impostato il formato con minimumSize e preferredSize, potrebbe essere dimenticato di chiamare Window.pack() in cui swing ridimensionerà i componenti (e tutto questo è sottocomponenti) in base alle dimensioni stabilite.

Si chiama nella finestra (o qualsiasi altra cosa sta costruendo la finestra) dopo aver impostato tutte le dimensioni preferite.

In alternativa è possibile utilizzare il metodo Component.setSize() ma è comes with some caveats.

+0

Potresti spiegare dove questa chiamata a pack() deve essere fatta? –

+0

Certo, 'pack()' dovrebbe essere chiamato dopo che tutto il tuo layout (impostazione layout, dimensioni e posizioni) del tuo componente UI è fatto. Dipende da dove è il codice per il layout (di solito nel costruttore). – Spoike

1

Hai controllato se hai davvero impostato la dimensione del JFame o di un JPanel contenuto?

Hai provato setSize?

0

Mi sono trovato in una situazione simile durante l'utilizzo di ide netbeans. Ho avuto una lettura di questo thread, che ha contribuito a:

http://forums.netbeans.org/ptopic28011.html

Sembra come se il quadro applicazione oscillazione sta salvando la dimensione della finestra dell'applicazione in una sottocartella all'interno della vostra directory home (per Windows, i "Dati applicazioni" cartella, per Linux, nella cartella home "~ /").

Ad esempio, per la mia applicazione 'CrapApp', swing aveva salvato alcune informazioni dell'ultima finestra nella sottocartella "~/.CrapApp /", in un file chiamato "mainFrame.session.xml".

Quindi, indipendentemente dal modo in cui ho ridimensionato la finestra all'interno del designer, in esecuzione, sembrava averlo ignorato e invece caricato le dimensioni della finestra dalle preferenze all'interno di questa sottocartella.

Quindi la mia soluzione era quella di eliminare questo-settings conservati sotto-cartella, ad esempio, nel mio caso, "rm -rf ~/.CrapApp /"

Allora il problema è andato via e ho potuto ridimensionare entro il designer ed esegui l'app con questa finestra ridimensionata ora visibile.

Questo mi ha fatto venire voglia di scoprire cosa ha scatenato questo problema. Ho notato che semplicemente eseguendo l'app all'interno dell'ide di netbeans e chiudendolo non si generava la sottocartella.

Dopo un po 'di armeggiare con la mia app, ho notato che la seguente azione ha innescato la generazione di questa sottocartella "~/.CrapApp /".

  1. Andare da mia app "Aiuto >> A proposito di"
  2. Fare clic sul pulsante "Chiudi" nella finestra di dialogo Informazioni che appare
  3. Uscire dalla app

E ora il "~ /. Riappare la sottocartella CrapApp/". Questa finestra di dialogo di aiuto/su è stata generata automaticamente dall'ide di netbeans, quindi non mi ci è piaciuto molto, ma questo sembra essere stato il colpevole nel mio caso.

Forse potrebbe essere un bug nell'ide netbeans, sto usando una versione piuttosto vecchia (v6.8), che sembra più o meno dall'era del tuo post originale.