java从入门到精髓 - Swing表格自定义JTable
import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class JTableDefineTest extends JFrame{
public JTableDefineTest()
{
super();
setTitle("表格");
setBounds(100,100,500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane scrollPane = new JScrollPane(); //支持滚动
getContentPane().add(scrollPane,BorderLayout.CENTER);
String[] columnNames = {"A","B","C","D","E","F","G"};
Vector columnNameV = new Vector(); //获得表头
for(int column = 0;column<columnNames.length;column++)
{
columnNameV.add(columnNames[column]);
}
Vector tableValueV = new Vector();
for(int row = 1;row<21;row++) //获得数据
{
Vector rowV = new Vector();
for(int column = 0;column<columnNames.length;column++)
{
rowV.add(columnNames[column]+row); //数据
}
tableValueV.add(rowV);
}
JTable table = new MyTable(tableValueV,columnNameV); //自定义的表格
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭表格列的自动调整功能。
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选
table.setSelectionBackground(Color.YELLOW);
table.setSelectionForeground(Color.RED);
table.setRowHeight(30);
scrollPane.setViewportView(table); //支持滚动
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JTableDefineTest jTableDefineTest= new JTableDefineTest();
jTableDefineTest.setVisible(true);
}
}
class MyTable extends JTable //实现自定义类
{
/**
*
*/
private static final long serialVersionUID = 1L;
public MyTable()
{
}
public MyTable(Vector rowData ,Vector 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; //单元格不可修改
}
}
import java.awt.Color;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class JTableDefineTest extends JFrame{
public JTableDefineTest()
{
super();
setTitle("表格");
setBounds(100,100,500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane scrollPane = new JScrollPane(); //支持滚动
getContentPane().add(scrollPane,BorderLayout.CENTER);
String[] columnNames = {"A","B","C","D","E","F","G"};
Vector columnNameV = new Vector(); //获得表头
for(int column = 0;column<columnNames.length;column++)
{
columnNameV.add(columnNames[column]);
}
Vector tableValueV = new Vector();
for(int row = 1;row<21;row++) //获得数据
{
Vector rowV = new Vector();
for(int column = 0;column<columnNames.length;column++)
{
rowV.add(columnNames[column]+row); //数据
}
tableValueV.add(rowV);
}
JTable table = new MyTable(tableValueV,columnNameV); //自定义的表格
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭表格列的自动调整功能。
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选
table.setSelectionBackground(Color.YELLOW);
table.setSelectionForeground(Color.RED);
table.setRowHeight(30);
scrollPane.setViewportView(table); //支持滚动
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JTableDefineTest jTableDefineTest= new JTableDefineTest();
jTableDefineTest.setVisible(true);
}
}
class MyTable extends JTable //实现自定义类
{
/**
*
*/
private static final long serialVersionUID = 1L;
public MyTable()
{
}
public MyTable(Vector rowData ,Vector 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; //单元格不可修改
}
}