Wrapping JPanel around JCheckBox without any space - Swing
我想在JPanel中显示JCheckBox-es的垂直列表。但是我决定用JPanel包装每个JCheckBox(以为我将来会需要它)。我将使用BoxLayout将这些JPanels(每个包含一个JCheckBox)垂直堆叠在另一个JPanel中。
BoxLayout可以按预期工作,而在JPanel之间没有添加任何垂直空间。我的问题是这些内部JPanels包含单独的复选框。每个面板的复选框周围都有相当大的空间。我想紧紧地包装这些复选框,以使jcheckbox的大小与包含它们的相应jpanel的大小相等。
对于这些单独的jpanel,我尝试了布局-flowlayout和默认布局。两者都没有帮助。
我怎样才能解决这个问题?我只是简单地设置flowlayout并将jcheckbox直接添加到jpanel。我没有使用其他代码。
我要添加示例代码:
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.FlowLayout;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; public class TryBox implements Runnable{ /** * @param args */ public static void main(String args[]) { SwingUtilities.invokeLater(new TryBox()); } public void run() { class InnerPanel extends JPanel { public InnerPanel(int i) { // TODO Auto-generated constructor stub setLayout(new FlowLayout()); setBackground(new Color(i*50, i*50, i*50)); add(new JCheckBox("CheckBox"+i)); } } JPanel outerPanel = new JPanel(); outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS)); for(int i=0;i<5;i++) { outerPanel.add(new InnerPanel(i)); } JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JScrollPane sp = new JScrollPane(outerPanel); frame.setPreferredSize(new Dimension(200, 600)); frame.getContentPane().add(new JScrollPane(outerPanel)); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } } |
在这里,
1 |
此外,
您是否尝试过将Swing组件的边距和边框插入设置为0?