我循环了10次,有10个图片和复选框,但是图片就会相互覆盖,怎样让图片与图片之间有缝隙呢?public class TwoL {    public TwoL(java.util.List<BufferedImage> bim){
      final JDialog dlg=new JDialog((JFrame)null,true);
         JPanel imgPanel=new JPanel(new BorderLayout());
         JPanel cbPane=new JPanel(new GridLayout(0,2));
         for(int i=0;i < bim.size();i++){
             JLabel lb=new JLabel();
             lb.setIcon(new ImageIcon(bim.get(i)));
             JCheckBox cb=new JCheckBox("图片" + i);
             cbPane.add(lb);
             cbPane.add(cb);
         }
         JScrollPane sp=new JScrollPane(cbPane);
         imgPanel.add(sp,BorderLayout.CENTER);         JPanel butPanel=new JPanel();
         JButton ok=new JButton("确定");
         ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
         JButton cancel=new JButton("取消");
         cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
         butPanel.add(ok);
         butPanel.add(cancel);
         dlg.setUndecorated(true);
         dlg.add(imgPanel);
         dlg.add(butPanel,BorderLayout.SOUTH);
         dlg.setSize(350,300);
         dlg.setLocation(200,200);
         dlg.setVisible(true);
    }
    public static void main(String[] args) {
     List<BufferedImage> bim = new ArrayList<BufferedImage>();
     for(int i=0;i<10;i++){
     bim.add(ImageCut.abscutImg("c:/c.jpg",0,i*20,100,40));    
     }
new TwoL(bim);
}

解决方案 »

  1.   

    这一行改一下
    JPanel cbPane=new JPanel(new GridLayout(0,2));
    改成
    JPanel cbPane=new JPanel(new GridLayout(0,2,3,3));
      

  2.   

    加一句lb.setPreferredSize(new Dimension(100,45));import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.util.ArrayList;
    import java.util.List;import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;public class TwoL {    public TwoL(java.util.List<BufferedImage> bim){
             final JDialog dlg=new JDialog((JFrame)null,true);
             JPanel imgPanel=new JPanel(new BorderLayout());
             JPanel cbPane=new JPanel(new GridLayout(0,2));
             for(int i=0;i < bim.size();i++){
                 JLabel lb=new JLabel();
                 lb.setPreferredSize(new Dimension(100,45));
                 lb.setIcon(new ImageIcon(bim.get(i)));
                 JCheckBox cb=new JCheckBox("图片" + i);
                 cbPane.add(lb);
                 cbPane.add(cb);
             }
             JScrollPane sp=new JScrollPane(cbPane);
             imgPanel.add(sp,BorderLayout.CENTER);         JPanel butPanel=new JPanel();
             JButton ok=new JButton("确定");
             ok.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    System.exit(0);
                }
            });
             JButton cancel=new JButton("取消");
             cancel.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    System.exit(0);
                }
            });
             butPanel.add(ok);
             butPanel.add(cancel);
             dlg.setUndecorated(true);
             dlg.add(imgPanel);
             dlg.add(butPanel,BorderLayout.SOUTH);
             dlg.setSize(350,300);
             dlg.setLocation(200,200);
             dlg.setVisible(true);
        }
        public static void main(String[] args) {
            List<BufferedImage> bim = new ArrayList<BufferedImage>();
            for(int i=0;i<10;i++){
                bim.add(ImageCut.abscutImg("c:/c.jpg",0,i*20,100,40));            
            }
            new TwoL(bim);
        }}