Java 将JPanel包装在JCheckBox上而不使用任何空格键

Java 将JPanel包装在JCheckBox上而不使用任何空格键,java,swing,layout,Java,Swing,Layout,我想在JPanel中显示JCheckBox e的垂直列表。但是我决定用一个JPanel来包装每个JCheckBox(我想我将来会需要它)。我将使用BoxLayout将这些JPanel(每个都包含一个JCheckBox)垂直堆叠到另一个JPanel中 BoxLayout按预期工作,在添加到它们的JPanel之间没有任何垂直空间。我的问题是这些内部JPanel包含单个复选框。每个面板的复选框周围都有相当大的空间。我想紧紧地包装这些复选框,以便jcheckbox的大小与包含它们的相应jpanel的大小

我想在JPanel中显示JCheckBox e的垂直列表。但是我决定用一个JPanel来包装每个JCheckBox(我想我将来会需要它)。我将使用BoxLayout将这些JPanel(每个都包含一个JCheckBox)垂直堆叠到另一个JPanel中

BoxLayout按预期工作,在添加到它们的JPanel之间没有任何垂直空间。我的问题是这些内部JPanel包含单个复选框。每个面板的复选框周围都有相当大的空间。我想紧紧地包装这些复选框,以便jcheckbox的大小与包含它们的相应jpanel的大小相等

对于这些单独的jpanel,我尝试了布局——flowlayout和default布局。两者都没有帮助

我怎样才能解决这个问题?我只是简单地设置flowlayout并将jcheckbox直接添加到jpanel中。我没有使用过其他代码

我正在添加一个示例代码: 导入java.awt.Color; 导入java.awt.Dimension; 导入java.awt.FlowLayout

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);
}

}
导入javax.swing.BoxLayout;
导入javax.swing.JCheckBox;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.SwingUtilities;
公共类TryBox实现可运行{
/**
*@param args
*/
公共静态void main(字符串参数[])
{
调用器(新的TryBox());
}
公开募捐
{
类InnerPanel扩展了JPanel
{
公共内部面板(int i){
//TODO自动生成的构造函数存根
setLayout(新的FlowLayout());
挫折背景(新颜色(i*50,i*50,i*50));
添加(新JCheckBox(“复选框”+i));
}
}
JPanel outerPanel=新的JPanel();
outerPanel.setLayout(新的BoxLayout(outerPanel,BoxLayout.Y_轴));

对于(int i=0;i是否尝试将边距和边框插图设置为0(在Swing组件上)?

是否尝试将边距和边框插图设置为0(在Swing组件上)?

是否尝试将边距和边框插图设置为0(在Swing组件上)?

是否尝试将边距和边框插图设置为0(在Swing组件上)

JPanel
的默认布局为
FlowLayout
,默认构造函数创建“默认的5单元水平和垂直间隙”。您可以不指定间隙:

JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));

此外,
JCheckBox
UI委托添加了随L&F变化的
Insets
。我会小心更改这些:大小可以忽略不计,通常需要适应选择指示。
JPanel
的默认布局是
FlowLayout
,默认构造函数创建“默认的5单位水平和垂直间隙。”您可以指定无间隙:

JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));

此外,
JCheckBox
UI委托添加了因L&F不同而不同的
Insets
。我会小心更改这些:大小可以忽略不计,通常需要适应选择指示。

JPanel的默认布局是
FlowLayout
,默认构造函数创建“默认的5单位水平和垂直间隙。“您可以指定无间隙:

JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));

此外,
JCheckBox
UI委托添加了因L&F不同而不同的
Insets
。我会小心更改这些:大小可以忽略不计,通常需要适应选择指示。

JPanel的默认布局是
FlowLayout
,默认构造函数创建“默认的5单位水平和垂直间隙。“您可以指定无间隙:

JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));

此外,
JCheckBox
UI委托添加了随L&F变化的
Insets
。我会小心更改这些:大小可以忽略不计,通常需要适应选择指示。

查看一种方法来创建复选框列表。这是一个很好的实现。我曾经研究过我的方法,我发现了它很难(我很懒)更改它:(.下次当我需要一个复选框列表时,我将使用你的。感谢你提供的奇妙解决方案。请查看一种方法来创建一个复选框列表。这是一个很好的实现。我有时会使用我的方法,我发现很难(我懒)更改它:(.下次当我需要一个复选框列表时,我将使用你的。感谢你提供了出色的解决方案。看看有没有一种方法可以创建一个复选框列表。这是一个很好的实现。我已经尝试过我的方法,我发现很难(我很懒)更改它:(.下次当我需要一个复选框列表时,我将使用你的。感谢你提供了出色的解决方案。看看有没有一种方法可以创建一个复选框列表。这是一个很好的实现。我已经尝试过我的方法,我发现很难(我很懒)更改它:(.下次当我需要复选框列表时,我将使用您的复选框。感谢您提供了出色的解决方案。此外,您可以设置每个JPanel和每个JCheckBox的边框颜色,以查看哪个面板有多余的空间。您是否阅读了
stackoverflow答案规则
?答案中不应包含任何问题:)抱歉。我将继续记住:)此外,您可以设置每个JPanel和每个JCheckBox的边框颜色,以查看哪个面板有多余的空间。您是否阅读了
stackoverflow答案规则
?答案中不应包含任何问题:)抱歉。我将继续记住:)此外,您还可以设置每个JPanel和每个JCheckBox的边框颜色,以查看哪个面板具有额外空间。您是否阅读了
stackoverflow答案规则
?答案中不应包含任何问题:)对此表示抱歉。我将继续记住:)此外,您还可以设置每个JPanel和每个JCheckBox的边框颜色,以查看哪个面板有多余的空间。您是否阅读了
堆栈溢出回答规则
?回答中不应包含任何问题:)抱歉。我将