Domanda

Sto usando swing GroupLayout e sono confuso circa i valori GroupLayout.DEFAULT_SIZE e GroupLayout.PREFERRED_SIZE. Non so mai quando utilizzare ciascuna di esse in metodi come GroupLayout.addComponent(Component, int, int, int).

supponiamo di avere questo codice:

GroupLayout l = ...;

l.setHorizontalGroup(l.createSequentialGroup()
    .addComponent(tf1)
    .addComponent(tf2));

l.setVerticalGroup(l.createParallelGroup()
    .addComponent(tf1)
    .addComponent(tf2));

ci sono due JTextFields su una singola linea disposte con GroupLayout (un gruppo sequenziale orizzontalmente e un gruppo parallelo verticalmente). se ridimensiona la finestra ora, entrambi i componenti ottenere lo spazio disponibile (50% ciascuno). ma voglio solo il primo campo di testo a crescere / ridurre in senso orizzontale e solo il secondo campo di testo a crescere / ridursi verticalmente. quali valori di min , pref e max dovrei usare per realizzare questo? So che posso solo provare e vedere quale combinazione opere, ma mi piacerebbe sapere il ragionamento alla base di questo problema.

È stato utile?

Soluzione

Alcune indicazioni possono essere trovati in Come Uso GroupLayout: Componente Dimensioni e Resizability . Per quanto riguarda DEFAULT_SIZE e PREFERRED_SIZE,

  

Possono essere utilizzati come parametri nel metodo

 addComponent(Component comp, int min, int pref, int max)
  

Per forzare un componente di essere ridimensionabile (consentire restringimento e crescente):

 group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  

Questo consente al componente di ridimensionare tra zero dimensioni (minimo) a qualsiasi dimensione (Short.MAX_VALUE come mezzo di dimensione massima "infinite"). Se volevamo il componente non ritirerà oltre la sua dimensione minima predefinita, useremo GroupLayout.DEFAULT_SIZE invece di 0 nel secondo parametro.

     

Per effettuare una dimensione fissa componente (ridimensionamento sopprimere):

 group.addComponent(component, GroupLayout.PREFERRED_SIZE,
     GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)...

È interessante notare, i valori costanti sono negativi, in modo che non può essere scambiato per vincoli reali.

Altri suggerimenti

Sono stato anche confuso su come GroupLayout.DEFAULT_SIZE e GroupLayout.PREFERRED_SIZE sono utilizzati in GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max), anche dopo riferimento alla sezione GroupLayout del Java tutorial e un articolo intitolato java.net conoscere GroupLayout, parte 1 .

Un tuffo nel JDK 1.6.0_27 GroupLayout.javasource ho trovato le risposte nella classe ComponentSpring. Da che ero in grado di elaborare queste regole:

Se è necessaria una dimensione minima:

  1. e il valore fornito è min non negativo, tale valore viene restituito.
  2. altra cosa se è PREFERRED_SIZE, seguiamo le regole per dimensione preferita.
  3. altra dimensione minima del componente viene restituito.

Se è necessaria una dimensione preferita:

  1. e il valore fornito è pref non negativo, tale valore viene restituito.
  2. altra cosa se è DEFAULT_SIZE o PREFERRED_SIZE, restituire dimensione preferita del componente.

Se è necessaria una dimensione massima:

  1. e il valore fornito è max non negativo, tale valore viene restituito.
  2. altra cosa se è PREFERRED_SIZE, seguiamo le regole per dimensione preferita.
  3. altro MaximumSize del componente viene restituito.

Come trashgod già osservato, le definisce sono negativi. Qualsiasi altro valore negativo per min, pref e max oltre DEFAULT_SIZE o PREFERRED_SIZE sono gli errori e colpo afferma.

L'interazione tra i SequentialGroup.addComponent min, pref, e dimensioni max non era immediatamente evidente per me dal tutorial. Ora so perché PREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZE è fisso, perché non importa se l'argomento centrale è DEFAULT_SIZE o PREFERRED_SIZE e come le NetBeans generati valori delle dimensioni fisse come il lavoro DEFAULT_SIZE,300,Short.MAX_VALUE.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top