您的位置:首页 > 编程语言 > Java开发

java swing Jtable 自定义 表格

2017-04-06 22:43 1191 查看
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);
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java jtable swing