Pregunta

Estoy usando GroupLayout Swing y estoy confundido acerca de los valores y GroupLayout.DEFAULT_SIZE GroupLayout.PREFERRED_SIZE. Nunca sé cuándo utilizar cada uno de ellos en métodos como GroupLayout.addComponent(Component, int, int, int).

supongamos que tengo este código:

GroupLayout l = ...;

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

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

hay dos JTextFields en una sola línea distribuida con GroupLayout (un grupo secuencial horizontalmente y un grupo paralelo verticalmente). Si cambio el tamaño de la ventana ahora, ambos componentes consiguen el espacio disponible (50% cada uno). pero quiero sólo el primer campo de texto para crecer / estirar horizontalmente y sólo el segundo campo de texto para crecer / contraerse verticalmente. cuáles son los valores de min , pref y max debería usar para lograr eso? Sé que solo puedo probarlo y ver lo que funciona combinación pero me gustaría saber el razonamiento detrás de este problema.

¿Fue útil?

Solución

Algunas guía se puede encontrar en ¿Cómo uso GroupLayout: tamaño de los componentes y Resizability . En cuanto a DEFAULT_SIZE y PREFERRED_SIZE,

  

Se pueden utilizar como parámetros en el método

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

Para forzar un componente a ser de tamaño variable (permitir la contracción y creciente):

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

Esto permite que el componente para cambiar el tamaño entre cero tamaño (mínimo) a cualquier tamaño (Short.MAX_VALUE como medios tamaño máximo "infinitos"). Si queremos que el componente no retroceder por debajo de su mínimo predeterminado, usaríamos GroupLayout.DEFAULT_SIZE en lugar de 0 en el segundo parámetro.

     

Para hacer un tamaño fijo componente (cambio de tamaño suprimir):

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

Curiosamente, los valores constantes son negativos, por lo que no puede ser confundido con las limitaciones reales.

Otros consejos

I también fue confundido acerca de cómo GroupLayout.DEFAULT_SIZE y GroupLayout.PREFERRED_SIZE se utilizan en GroupLayout.SequentialGroup.addComponent(Component c, int min, int pref, int max), incluso después de hacer referencia a la sección GroupLayout de la Java tutoriales y un artículo titulado java.net conocer GroupLayout, parte 1 .

El zambullirse en el JDK 1.6.0_27 GroupLayout.javasource he encontrado las respuestas en la clase ComponentSpring. Desde que yo era capaz de trabajar a cabo las siguientes reglas:

Si es necesario un mínimo:

  1. y el valor min proporcionada es no negativo, se devuelve dicho valor.
  2. otra cosa si es PREFERRED_SIZE, seguimos las reglas para el tamaño preferido.
  3. otra cosa se devuelve el tamaño mínimo del componente.

Si se necesita un tamaño preferido:

  1. y el valor pref proporcionada es no negativo, se devuelve dicho valor.
  2. otra cosa si es DEFAULT_SIZE o PREFERRED_SIZE, regresar el tamaño preferido del componente.

Si se necesita un tamaño máximo:

  1. y el valor max proporcionada es no negativo, se devuelve dicho valor.
  2. otra cosa si es PREFERRED_SIZE, seguimos las reglas para el tamaño preferido.
  3. otra cosa se devuelve MaximumSize del componente.

Como trashgod ya se señaló, los define son negativos. Cualquier otro valor negativo para min, pref y máximo además DEFAULT_SIZE o PREFERRED_SIZE son errores y afirma golpe.

La interacción entre los SequentialGroup.addComponent min, pref y tamaños Max no fue inmediatamente evidente a mí desde el tutorial. Ahora sé por qué PREFERRED_SIZE,DEFAULT_SIZE,PREFERRED_SIZE es fijo, por lo que no importa si el argumento central es DEFAULT_SIZE o PREFERRED_SIZE y cómo el NetBeans generan valores de tamaño fijo, como el trabajo DEFAULT_SIZE,300,Short.MAX_VALUE.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top