Java SWT 删除父级的间距

问题描述

有人知道如何删除内容和父内容间的间距吗?

例如:

GridLayout layout = new GridLayout(1,false);
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;

shell.setText("Layout");
shell.setMaximized(true);
shell.setimage(imghandler.getCornerimg());
shell.setLayout(layout);
      
Composite mainComp = new Composite(shell,SWT.NONE);
data = new GridData(SWT.FILL,SWT.FILL,true,true);
layout.numColumns = 2;
mainComp.setLayout(layout);
mainComp.setLayoutData(data);
mainComp.setBackground(display.getSystemColor(SWT.COLOR_WHITE));

Composite subComp1 = new Composite(mainComp,true);
layout.numColumns = 1;
subComp1.setLayout(layout);
subComp1.setLayoutData(data);
subComp1.setBackground(display.getSystemColor(SWT.COLOR_CYAN));

Composite subComp2 = new Composite(mainComp,true);
subComp2.setLayout(layout);
subComp2.setLayoutData(data);
subComp2.setBackground(display.getSystemColor(SWT.COLOR_GREEN));

Composite subComp3 = new Composite(mainComp,2,1);
layout.numColumns = 2;
subComp3.setLayout(layout);
subComp3.setLayoutData(data);
subComp3.setBackground(display.getSystemColor(SWT.COLOR_magenta));

shell.pack();
shell.open();

enter image description here

我想删除 shell 和 mainComp 之间以及 mainComp 和 subComps 之间的间距。有什么想法吗?

解决方法

GridLayout 中设置边距高度和宽度:

layout.marginWidth = 0;
layout.marginHeight = 0;

注意:您还应该为每个 GridLayout 使用一个新的 Composite

,

我建议为此使用 Netbeans 表单设计器。我用 Netbeans 做了一个例子,你会注意到父面板有黑色背景,根本不可见

public class GridSpacing extends javax.swing.JPanel {


public GridSpacing() {
    initComponents();
}

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {
    java.awt.GridBagConstraints gridBagConstraints;

    pnlParent = new javax.swing.JPanel();
    pnlTurquoise = new javax.swing.JPanel();
    pnlPink = new javax.swing.JPanel();
    pnlGreen = new javax.swing.JPanel();

    setLayout(new java.awt.GridBagLayout());

    pnlParent.setBackground(new java.awt.Color(0,0));
    pnlParent.setLayout(new java.awt.GridBagLayout());

    pnlTurquoise.setBackground(new java.awt.Color(0,255,204));

    javax.swing.GroupLayout pnlTurquoiseLayout = new javax.swing.GroupLayout(pnlTurquoise);
    pnlTurquoise.setLayout(pnlTurquoiseLayout);
    pnlTurquoiseLayout.setHorizontalGroup(
        pnlTurquoiseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0,200,Short.MAX_VALUE)
    );
    pnlTurquoiseLayout.setVerticalGroup(
        pnlTurquoiseLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0,150,Short.MAX_VALUE)
    );

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
    gridBagConstraints.weightx = 1.0;
    gridBagConstraints.weighty = 1.0;
    pnlParent.add(pnlTurquoise,gridBagConstraints);

    pnlPink.setBackground(new java.awt.Color(255,255));

    javax.swing.GroupLayout pnlPinkLayout = new javax.swing.GroupLayout(pnlPink);
    pnlPink.setLayout(pnlPinkLayout);
    pnlPinkLayout.setHorizontalGroup(
        pnlPinkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0,400,Short.MAX_VALUE)
    );
    pnlPinkLayout.setVerticalGroup(
        pnlPinkLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0,Short.MAX_VALUE)
    );

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
    gridBagConstraints.weightx = 1.0;
    gridBagConstraints.weighty = 1.0;
    pnlParent.add(pnlPink,gridBagConstraints);

    pnlGreen.setBackground(new java.awt.Color(51,51));

    javax.swing.GroupLayout pnlGreenLayout = new javax.swing.GroupLayout(pnlGreen);
    pnlGreen.setLayout(pnlGreenLayout);
    pnlGreenLayout.setHorizontalGroup(
        pnlGreenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0,Short.MAX_VALUE)
    );
    pnlGreenLayout.setVerticalGroup(
        pnlGreenLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0,Short.MAX_VALUE)
    );

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
    gridBagConstraints.weightx = 1.0;
    gridBagConstraints.weighty = 1.0;
    pnlParent.add(pnlGreen,gridBagConstraints);

    add(pnlParent,new java.awt.GridBagConstraints());
}// </editor-fold>                        


// Variables declaration - do not modify                     
private javax.swing.JPanel pnlGreen;
private javax.swing.JPanel pnlParent;
private javax.swing.JPanel pnlPink;
private javax.swing.JPanel pnlTurquoise;
// End of variables declaration                   

}

enter image description here