Altura de fila MigLayout y tamaño de fuente cambiante

Tengo un problema al usar MigLayout en combinación con cambiar dinámicamente el tamaño de fuente de los componentes que se muestran en las celdas de MigLayout.

En detalle: agregué un JCheckBox a través de MigLayout a un JPanel. El tamaño de fuente de JCheckBox es el predeterminado (12pt?) Y la fila que contiene JCheckBox tiene una altura preferida de 17lp. Todo eso funciona bien. (Ver aquí: http://www.bilderload.com/bild/227327/migproblemcellheight1UQXP2.png )

Ahora cambio el tamaño de fuente a, por ejemplo, 20pt e inicio el programa nuevamente. Ahora el texto de JCheckBox se corta porque la fila también tiene la altura de 17lp. (Ver aquí: http://www.bilderload.com/bild/227328/migproblemcellheight2DDPGJ.png )

Si, por ejemplo, dejo la definición de fila vacía ("[]"), el texto se muestra correctamente con ambos tamaños de fuente: el normal y el grande. Pero en este caso, la fila nunca alcanzará un mínimo de 17lp. (Siempre tendrá un mínimo de 23lp más o menos)

¿Cómo puedo cambiar la definición de MigLayout para obtener una altura mínima de fila de 17lp y permitir que la celda crezca correctamente con los componentes tamaño de fuente / texto, etc.? ¿O tal vez este es un problema de L&F?

Gracias y Saludos cordiales,

Philipp

Aquí está mi código de muestra (ejemplo de trabajo):

import java.awt.Font;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

import net.miginfocom.swing.MigLayout;

public class TestMigLayoutFontSize extends JFrame {
  public TestMigLayoutFontSize() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(600, 400);
    setContentPane(getTestPanel());
    setVisible(true);
  }

  private JPanel getTestPanel() {
    JCheckBox testBox = new JCheckBox("Program argument");
    Font normalFont = testBox.getFont();
    Font largeFont = new Font(testBox.getFont().getName(), testBox.getFont().getStyle(), 20);
    // testBox.setFont(normalFont);
    testBox.setFont(largeFont);

    JPanel tempPanel = new JPanel(new MigLayout("debug", "0lp![grow,fill]0lp!", "[17lp:17lp:n]"));
    tempPanel.add(testBox);

    JPanel testPanel = new JPanel(new MigLayout("", "[grow,fill]", "[grow,fill]"));
    testPanel.add(tempPanel);

    return testPanel;
  }

  public static void main(String[] args) {
    new TestMigLayoutFontSize();
  }
}
Respuesta 1

Puede reducir el espacio alrededor de su casilla de verificación reduciendo el tamaño del borde, por ejemplo, poner

testBox.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));

directamente después de la asignación de testBox. Luego puede dejar la definición de fila vacía y aún así obtener una altura razonable para su panel.

Respuesta: 2

Soy nuevo en Java y Selenium e intento aprender El problema es que no sé cómo extraer nombres de un menú desplegable usando la clase Seleccionar. He creado una cadena de matriz variable con el ...

¿Alguien puede ayudar a comparar los valores de una JTable con otro conjunto de valores de JTable? Mi programa es 1) Actualizar tabla desde un servidor telnet 2) Cuando vuelvo a actualizar, si encuentro algún cambio en el ...

SurfaceView: Como sé, SurfaceView está dibujando en diferentes hilos (usando SurfaceHolder.Callback ()). En un proyecto de juego de Android, veo en la clase SurfaceView: procesan física (ubicación, ...) en ...

He estado buscando una respuesta a esto, pero parece que mi problema es más específico que otros. Entonces tengo dos clases y una interfaz. La interfaz se llama "Comparable" y sé que el ...