java swing Jtable 自定义 表格

本文介绍如何使用Java Swing中的JTable组件创建自定义表格,包括设置表格样式、禁用列重排、调整单元格对齐方式等。通过具体代码实现了一个具有特定行高、选择模式、背景及前景色配置的表格示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.js;
import java.awt.*;
import java.util.Vector;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;

public class Java_7_Swing_JTable_3 extends JFrame {
    public Java_7_Swing_JTable_3(){
        super();
        setTitle("自定义表格");
        setBounds(100,100,500,375);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JScrollPane scrollPane = new JScrollPane();
        getContentPane().add(scrollPane, BorderLayout.CENTER);
        String[] columnNames = {"A","B","C","D","E","F","G"};
        Vector<String> columnNameV = new Vector<>();
        for(int column = 0;column < columnNames.length;column++){
            columnNameV.add(columnNames[column]);
        }
        Vector<Vector<String>> tableValueV = new Vector<>();
        for(int row = 1;row<21;row++){
            Vector<String> rowV = new Vector<>();
            for(int column = 0;column < columnNames.length;column++){
                rowV.add(columnNames[column]+row);
            }
            tableValueV.add(rowV);
        }
        JTable table = new MTable(tableValueV,columnNameV);
        //关闭表格列的自动调整功能
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        // 选择模式为单选
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        // 被选择行的背景为黄色
        table.setSelectionBackground(Color.YELLOW);
        // 被选择行的前景色(文字颜色)为红色
        table.setSelectionForeground(Color.RED);
        // 表格的行高为30像素
        table.setRowHeight(30);
        scrollPane.setViewportView(table);
    }
    private class MTable extends JTable{
        public MTable(Vector<Vector<String>> rowData,Vector<String> columnNames){
            super(rowData,columnNames);
        }
        @Override
        public JTableHeader getTableHeader(){//定义表格头
            // 获取表格头对象
            JTableHeader tableHeader = super.getTableHeader();
            tableHeader.setReorderingAllowed(false);//设置表格列不可重排
            DefaultTableCellRenderer hr = (DefaultTableCellRenderer)tableHeader.getDefaultRenderer();//获得表格头单元格对象
            // 设置列名居中显示
            hr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
            return tableHeader;
        }
        // 定义单元格
        @Override
        public TableCellRenderer getDefaultRenderer(Class<?> columnClass){
            DefaultTableCellRenderer cr = (DefaultTableCellRenderer)super.getDefaultRenderer(columnClass);// 获得表格的单元格对象
            // 设置单元格内容居中显示
            cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
            return cr;
        }
        @Override
        public boolean isCellEditable(int row,int column){
            //表格不可编辑
            return false;
        }
    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Java_7_Swing_JTable_3 frame = new Java_7_Swing_JTable_3();
        frame.setVisible(true);
    }

}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值