Jak usunąć/zmniejszyć odstępy między polami wyboru
za pomocą MigLayout
?Swing: odstępy między polami wyboru w porównaniu do etykiet
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);
}
}
UWAGA: Zastanawiam się, czy może MigLayout część to pytanie jest czerwony śledź. Jeśli zmienię mój program do następujących, otrzymuję te dialogi:
Zauważysz różnicę w rozstawie etykiet i wyboru. Jak mogę pozbyć się nadmiaru odstępów dla pól wyboru?
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);
}
}
dzięki! W końcu miałem czas, aby to wypróbować, a ustawienie pola wyboru na wartość null zmniejszyło pustą przestrzeń. Wygląda na to, że potrzebujesz trochę miejsca na poprawne renderowanie prostokąta ostrości, więc zrobiłem cb.setBorder (nowy EmptyBorder (nowe wstawki (1,1,1,1)); i to wydaje się być dobrym kompromisem . –