Java JTable设置(表头,字体,列宽,行宽,间隔色)

最学习了Java的表格JTable,感觉这个组件很好用,就写了一个表格的示例,给大家分享。

这里写图片描述
//支持原创

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;

public class JTableTestFrame extends JFrame {

    private JPanel contentPane;
    private DefaultTableModel defaultTableModel;
    private JTable table;
    private TableColumn column;

    Toolkit toolkit = Toolkit.getDefaultToolkit();
    private int DEFAULE_WIDTH = 1000;
    private int DEFAULE_HEIGH = 600;

    int Location_x = (int) (toolkit.getScreenSize().getWidth() - DEFAULE_WIDTH) / 2;
    int Location_y = (int) (toolkit.getScreenSize().getHeight() - DEFAULE_HEIGH) / 2;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    JTableTestFrame frame = new JTableTestFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public JTableTestFrame() {

        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout());

        String[] n1 = { "", "", "", "", "", "", "", "", "", "", "", "", "" };
        Object[][] p = { n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
                n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
                n1, };
        String[] n = { "序号", "姓名", "学号", "语文", "数学", "英语", "政治", "历史", "地理", "物理", "化学", "生物", "总分" };

        defaultTableModel = new DefaultTableModel(p, n); // 用双数组创建DefaultTableModel对象
        table = new JTable(defaultTableModel);// 创建表格组件
        JTableHeader head = table.getTableHeader(); // 创建表格标题对象
        head.setPreferredSize(new Dimension(head.getWidth(), 35));// 设置表头大小
        head.setFont(new Font("楷体", Font.PLAIN, 18));// 设置表格字体
        table.setRowHeight(18);// 设置表格行宽

        table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);// 以下设置表格列宽
        for (int i = 0; i < 13; i++) {
            column = table.getColumnModel().getColumn(i);
            if (i == 0) {
                column.setPreferredWidth(50);
            }
        }

        DefaultTableCellRenderer ter = new DefaultTableCellRenderer()// 设置表格间隔色
        {
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                    boolean hasFocus, int row, int column) {
                // table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
                if (row % 2 == 0)
                    setBackground(Color.pink);
                else if (row % 2 == 1)
                    setBackground(Color.white);
                return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            }
        };
        for (int i = 0; i < 13; i++) {
            table.getColumn(n[i]).setCellRenderer(ter);
        }

        JScrollPane scrollPane = new JScrollPane(table, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);// 创建滚动条组件,默认滚动条始终出现,初始化列表组件

        contentPane.add(scrollPane, BorderLayout.CENTER);

        setContentPane(contentPane);
        setTitle("育才中学初一.4班期末考试成绩表");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(Location_x, Location_y);
        setSize(DEFAULE_WIDTH, DEFAULE_HEIGH);
    }
}

si不si对你很有帮助呢,尽情点赞,评论和支持吧

  • 49
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
你可以通过使用`DefaultTableCellRenderer`类来设置JTable每一行的字体大小。具体的步骤如下: 1. 创建一个继承自`DefaultTableCellRenderer`的类,例如`MyTableCellRenderer`。 2. 在`MyTableCellRenderer`类中重写`getTableCellRendererComponent`方法,将该方法中的`super.getTableCellRendererComponent`方法返回的`Component`对象的字体设置为你想要的字体大小。 3. 在需要设置JTable每一行的字体大小的地方,例如在JTable的构造方法中,使用`setRowHeight`方法设置行高,并使用`setDefaultRenderer`方法将`MyTableCellRenderer`对象设置JTable的默认渲染器。 下面是一个示例代码: ```java import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import java.awt.*; public class MyTableCellRenderer extends DefaultTableCellRenderer { private Font font; public MyTableCellRenderer(Font font) { this.font = font; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); component.setFont(font); return component; } } class MyTable extends JTable { public MyTable(Object[][] rowData, Object[] columnNames) { super(rowData, columnNames); setRowHeight(30); setDefaultRenderer(Object.class, new MyTableCellRenderer(new Font("宋体", Font.PLAIN, 20))); } } ``` 在上面的示例代码中,`MyTable`类继承自`JTable`类,它的构造方法中设置了行高为30,并将`MyTableCellRenderer`对象设置JTable的默认渲染器,其中`MyTableCellRenderer`构造方法中传入了一个字体对象,该字体对象的大小为20。这样就可以设置JTable每一行的字体大小为20了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值