¿Cuál es el propósito de usar Java Layout Managers?
swing (2)
Cuando utiliza un
layout
, invocar
pack()
"Hace que esta
Window
se dimensione para ajustarse al tamaño y diseños preferidos de sus subcomponentes".
Cuando no lo hace, debe intentar calcular los límites usted mismo.
Si (cuando) se equivoca, como se muestra en el siguiente ejemplo, los usuarios lo culparán, y no sin alguna justificación.
Un ejemplo relacionado con contenedores no redimensionables se ve
here
.
import java.awt.EventQueue;
import java.awt.FontMetrics;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
/**
* @see https://stackoverflow.com/a/37801762/230513
* @see https://stackoverflow.com/a/12532237/230513
*/
public class Evil {
private static final String S = "Tomorrow''s winning lottery numbers: 42, ";
private final JLabel label = new JLabel(S + "3, 1, 4, 1, 5, 9");
private void display() {
JFrame f = new JFrame("Evil");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(null);
FontMetrics fm = label.getFontMetrics(label.getFont());
int w = SwingUtilities.computeStringWidth(fm, S) + 8;
int h = fm.getHeight();
label.setBounds(0, 0, w, h);
f.add(label);
f.setSize(w, h * 3);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Evil().display();
}
});
}
}
Parece que cada vez que intento crear un programa siempre
setLayout(null);
usando
setLayout(null);
comando en Java porque me gusta posicionar absolutamente lo que sea que esté poniendo en mis componentes de swing.
Por lo que leo, todo el mundo dice que use gestores de diseño para simplemente el proceso de codificación, pero ¿cómo lo simplifica?
¿Cuál es el problema que surge con el posicionamiento absoluto entre sistemas de plataforma?
En pocas palabras, hacen el trabajo cada vez que cambia el tamaño de la ventana, debido al tamaño del escritorio o los usuarios que arrastran los bordes de la ventana. Si coloca las cosas absolutamente, se estropearán cada vez que cambie el tamaño.