Làm cách nào để bạn xóa/giảm khoảng cách giữa các hộp kiểm
với MigLayout
?Swing: khoảng cách hộp kiểm so với nhãn
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);
}
}
LƯU Ý: Tôi đang tự hỏi có lẽ nếu phần MigLayout của câu hỏi này là một cá trích đỏ. Nếu tôi thay đổi chương trình của tôi đến sau, tôi nhận được những đoạn hội thoại:
Bạn sẽ lưu ý sự khác biệt về khoảng cách giữa các nhãn và hộp kiểm. Làm thế nào tôi có thể loại bỏ khoảng cách thừa cho các hộp kiểm?
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);
}
}
cảm ơn! Cuối cùng tôi đã có thời gian để thử nó, và thiết lập các hộp kiểm để null giảm không gian trống rỗng. Có vẻ như bạn cần một không gian nhỏ để hình chữ nhật lấy nét hiển thị đúng cách, vì vậy tôi đã làm 'cb.setBorder (new EmptyBorder (Insets mới (1,1,1,1));' và đó dường như là một thỏa hiệp tốt đẹp . –