Estoy usando miglayout para crear un formulario en el que hay JTextFields (respuestas de entrada cortas), así como JTextAreas (respuestas más largas). El problema es doble.Swing: ¿cómo mezclar JTextField y JTextAreas y tener la misma apariencia visual?
- El borde colocado alrededor de un área de texto envolvente no coincide con el de un campo de texto.
- El ancho y la ubicación del textarea/textfield difieren, lo que hace que no se alineen correctamente.
Después de cambiar de derecha/izquierda a derecha/llenado: alt text http://grab.by/3RMk se puede ver que los límites se alinean, pero que todavía hay lagunas. Traté de configurar novisualpadding, pero esto no lo solucionó. código
Fuente:
package test2;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
public class Test extends JPanel {
private static final int NUM_CHARACTERS_WIDTH = 20;
private static final int NUM_ROWS = 5;
public Test() {
setLayout(new MigLayout(
"wrap 2",
// Align text labels on the so their right edge meets left edge of the text fields
"[right][left]"
));
add(new JLabel("Text field:"));
add(new JTextField(NUM_CHARACTERS_WIDTH));
add(new JLabel("No scrollpane text area:"));
add(new JTextArea(NUM_ROWS, NUM_CHARACTERS_WIDTH));
add(new JLabel("Scrollpane text area:"));
add(new JScrollPane(new JTextArea(NUM_ROWS, NUM_CHARACTERS_WIDTH)));
add(new JLabel("Text field:"));
add(new JTextField(NUM_CHARACTERS_WIDTH));
}
public static void main(String[] args) {
JFrame frame = new JFrame("");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new Test();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
¿Cuál es la mejor forma de mezclar y JTextField partido y jtextareas, mientras que todavía mantiene la armonía visual? Ahora me doy cuenta de que el campo de texto tiene un resaltado azul cuando el foco está en él, a diferencia del área de texto ... otra fuente de discontinuidad visual.
El [fill] ayuda. Sin embargo, el tamaño aún no es perfecto en Mac OSX: http://grab.by/3O9U – I82Much
Tal vez una alternativa más adaptable sea adoptar el borde preferido de un tipo de componente y aplicarlo al otro; por ejemplo, textField.setBorder (scrollPane.getBorder()). –
Considera probar java.awt.GridBagLayout. Vea mi respuesta enmendada para más código. –