java - JTable 标题间距

标签 java swing jtable jtableheader

我知道 JTable 单元格的间距非常简单,如下所示;

int gapWidth = 10;
int gapHeight = 5;
table.setIntercellSpacing(new Dimension(gapWidth, gapHeight));

这样的间距似乎不会影响表头。有没有办法使标题具有相同的尺寸?

最佳答案

最简单的方法可能是设置 EmptyBorders to the JTableHeaderTableCellRenderer

The code above does my spacing, but the alignment of header and the actual row cell values looks slighly off - as a result of spacing only placed on cells but not the header.

我添加了一个 SSCCE(3 分 27 秒,包括在此处上传)

enter image description here enter image description here

来自代码

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class IntercellSpacingTableHeader {

    private JFrame frame = new JFrame("Table Demo");
    private String[] columnNames = {"String", "Integer", "Float", "Double"};
    private Object[][] data = {
        {"aaa", new Integer(12), new Float(12.15), new Double(100.05)},
        {"bbb", new Integer(5), new Float(7.154), new Double(6.1555)},
        {"CCC", new Integer(92), new Float(0.1135), new Double(3.1455)},
        {"ddd", new Integer(12), new Float(31.15), new Double(10.05)},
        {"eee", new Integer(5), new Float(5.154), new Double(16.1555)},
        {"fff", new Integer(92), new Float(4.1135), new Double(31.1455)}};
    private TableModel model = new DefaultTableModel(data, columnNames) {

        private static final long serialVersionUID = 1L;

        @Override
        public Class<?> getColumnClass(int column) {
            return getValueAt(0, column).getClass();
        }
    };
    private JTable table = new JTable(model);

    public IntercellSpacingTableHeader() {
        int gapWidth = 10;
        int gapHeight = 5;
        table.setIntercellSpacing(new Dimension(gapWidth, gapHeight));
        table.setRowHeight(20);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scroll = new JScrollPane(table);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(scroll);
        frame.pack();
        frame.setLocation(150, 150);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new IntercellSpacingTableHeader();
            }
        });
    }
}

关于java - JTable 标题间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206481/

相关文章:

java - 休息服务: select an appropriate method

java - setOnClickListener 中的变量可见性

java - 按下 JButton 时将文件中的数字设置为 0

java - 从自定义 AbstractTableModel 添加/删除更多列到 JTable

java - Pyjnius 自定义 java 方法返回 'JavaException: Unable to find a None Method' 在 Public Static 之后工作

java - Mockito 不模拟模拟对象的字段

Java Swing 2D 动画

java - 我有一个打开 GUI 的按钮,如何设置 GUI 在屏幕上显示的位置?

java - 如何在表格中将 URL 显示为可点击的 URL 并允许它们在默认浏览器中打开?

java - 添加新行后未调用 getTableCellRendererComponent