在Swing中设置Tablelayout中单元格的Margin / Inset

时间:2014-06-26 06:50:38

标签: java swing layout-manager tablelayout

无论如何都要为TableLayout中的Insets(对于挥杆应用)设置一个单元格的边距,例如GridBagLayout中的{{1}}。

我需要在表格中的单元格之间留出空间。一种解决方案是添加所需空间的行或列。

如果解决方案适用于netbeans,我会更高兴。

1 个答案:

答案 0 :(得分:1)

实际上有两个TableLayout经理。 Clear thoughts' TableLayout以及最近的Esoteric Softwares' TableLayout

我提供了一个使用两个管理器的简单示例。我们在窗口上放了六个按钮 并在它们之间添加一些空格。

清晰的想法'溶液

package com.zetcode;

import info.clearthought.layout.TableLayout;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class TableLayoutGaps2 extends JFrame {

    public TableLayoutGaps2() {

        initUI();

        setTitle("Gaps");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }


   private void initUI() {

        JPanel base = new JPanel();
        base.setBorder(
            BorderFactory.createEmptyBorder(5, 5, 5, 5)
        );

        double cols[] = {
            TableLayout.PREFERRED,
            TableLayout.PREFERRED,
            TableLayout.PREFERRED
        };

        double rows[] = {
            TableLayout.PREFERRED,
            TableLayout.PREFERRED
        };

        TableLayout layout = new TableLayout(cols, rows);
        layout.setHGap(5);
        layout.setVGap(5);

        base.setLayout(layout);

        base.add(new JButton("Button"), "0, 0");
        base.add(new JButton("Button"), "1, 0");
        base.add(new JButton("Button"), "2, 0");
        base.add(new JButton("Button"), "0, 1");
        base.add(new JButton("Button"), "1, 1");
        base.add(new JButton("Button"), "2, 1");

        add(base);

        pack();
    }

    public static void main(String[] args) {

      EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                TableLayoutGaps2 ex = new TableLayoutGaps2();
                ex.setVisible(true);
            }
        });
    }
}

使用以下方法添加间隙:

layout.setHGap(5);
layout.setVGap(5);

Gaps

深奥的软件解决方案

package com.zetcode;

import com.esotericsoftware.tablelayout.swing.Table;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;


public class TableLayoutGaps3 extends JFrame {

    public TableLayoutGaps3() {

        initUI();

        setTitle("Gaps");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }


   private void initUI() {

        Table table = new Table();
        getContentPane().add(table);

        table.addCell(new JButton("Button")).pad(5, 5, 2.5f, 2.5f);
        table.addCell(new JButton("Button")).pad(5, 2.5f, 2.5f, 2.5f);
        table.addCell(new JButton("Button")).pad(5, 2.5f, 2.5f, 5);
        table.row();
        table.addCell(new JButton("Button")).pad(2.5f, 5, 5, 2.5f);
        table.addCell(new JButton("Button")).pad(2.5f, 2.5f, 5, 2.5f);
        table.addCell(new JButton("Button")).pad(2.5f, 2.5f, 5, 5);

        pack();
    }

    public static void main(String[] args) {

      EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                TableLayoutGaps3 ex = new TableLayoutGaps3();
                ex.setVisible(true);
            }
        });
    }
}

使用gap()方法添加组件之间的间隙。

但是,我不能推荐这两个布局管理器中的任何一个。而是使用 以下布局管理器之一:

  1. MigLayout
  2. 的GroupLayout
  3. 的FormLayout
  4. 它们更灵活,更强大。这些经理可以更好地应对 许多布局管理的挑战。