Wie entfernen/reduzieren Sie den Abstand zwischen den Kontrollkästchen
mit MigLayout
?Swing: Kontrollkästchen Abstand im Vergleich zu Etiketten
import java.util.Arrays;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class CheckboxSpacing {
public static void main(String[] args) {
JFrame frame = new JFrame("checkbox spacing");
JPanel panel = new JPanel();
frame.setContentPane(panel);
panel.setLayout(new MigLayout());
for (String verb : Arrays.asList("see","hear","speak"))
{
JCheckBox cb = new JCheckBox(verb+" no evil");
panel.add(cb, "wrap");
}
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
HINWEIS: Ich frage mich, vielleicht, wenn das MigLayout Teil dieser Frage eine falsche Fährte ist. Wenn ich mein Programm auf die folgenden ändern, erhalte ich diese Dialoge:
Sie werden den Unterschied in Abstand zwischen den Etiketten und Kontrollkästchen beachten. Wie kann ich den überschüssigen Abstand für Checkboxen beseitigen?
import java.awt.Component;
import java.util.Arrays;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class CheckboxSpacing {
enum WhichGUI { LABEL {
@Override
public Component createComponent(String text) {
return new JLabel(text);
}
}, CHECKBOX {
@Override
public Component createComponent(String text) {
return new JCheckBox(text);
}
};
abstract public Component createComponent(String text);
}
public static void main(String[] args) {
doit(WhichGUI.LABEL);
doit(WhichGUI.CHECKBOX);
}
private static void doit(WhichGUI which) {
JFrame frame = new JFrame("spacing: "+which);
JPanel panel = new JPanel();
frame.setContentPane(panel);
panel.setLayout(new MigLayout(
"", //layout
"[]", //column
"0" //row
));
for (String verb : Arrays.asList("see","hear","speak"))
{
Component c = which.createComponent(
verb+" no evil (Jabberwocky! Çgpq)");
panel.add(c, "wrap 0");
}
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
danke! Ich hatte endlich Zeit, es zu versuchen, und das Kontrollkästchen auf Null gesetzt reduziert den leeren Raum. Es sieht so aus, als bräuchtest du ein wenig Platz, damit das Fokusrechteck richtig rendern kann, also habe ich 'cb.setBorder (new EmptyBorder (newInsets (1,1,1,1))));' und das scheint ein guter Kompromiss zu sein . –