创建可以滚动的表格
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Example1 extends JFrame {
public static void main(String args[]) {
Example1 frame = new Example1();
frame.setVisible(true);
}
public Example1() {
super();
setTitle("创建可以滚动的表格");
setBounds(100,100,240,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] columnNames = {"A","B"};//定义表格列数组民
String[][] tableValues = {{"A1","B1"},{"A2","B2"},{"A3","B3"},{"A4","B5"}};
JTable table = new JTable(tableValues,columnNames);
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane,BorderLayout.CENTER);
}
}
创建不可滚动的表格
利用构造方法JT able(Vector rowData,Vector columnNames)创建一个表格,并直接添加到容器中
import java.awt.BorderLayout;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
public class Example2 extends JFrame {
public static void main(String args[]) {
Example2 frame =new Example2();
frame.setVisible(true);
}
public Example2() {
super();
//setTitle("创建不可滚动的表格");
//setTitle();
setBounds(100,100,240,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Vector<String>columnNameV = new Vector<>();
columnNameV.add("A");
columnNameV.add("B");
Vector<Vector<String>>tableValueV =new Vector<>();//定义表格数据向量
for(int row =1 ;row<6;row++)
{
Vector<String>rowV =new Vector<>();
rowV.add("A"+row);
rowV.add("B"+row);
tableValueV.add(rowV);
}
//创建指定表格列名和指定表格数据的表格
JTable table = new JTable(tableValueV,columnNameV);
//将表格添加到边界布局的中间
getContentPane().add(table,BorderLayout.CENTER);
JTableHeader tableHeader = table.getTableHeader();
getContentPane().add(tableHeader,BorderLayout.NORTH);
}
}
运行结果
定义表格
设置表格的背景、选择表格时被选中的框的颜色等等
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;
public class Example3 extends JFrame {
public static void main(String args[]) {
Example3 frame =new Example3();
frame.setVisible(true);
}
public Example3() {
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]+row);
}
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);
//被选择行的文字颜色设置为red
table.setSelectionForeground(Color.RED);
table.setRowHeight(30);//表格的行高为30像素
scrollPane.setViewportView(table);
}
private class MTable extends JTable{
public MTable(Vector<Vector<String>>rowData,Vector<String>columnNames) {
super(rowData,columnNames);
}
public JTableHeader getTableHeader() {//定义表格头
//获得表格头对象
JTableHeader tableHeader = super.getTableHeader();
tableHeader.setReorderingAllowed(false);//表格列不可以重排
DefaultTableCellRenderer hr = (DefaultTableCellRenderer);
tableHeader.getDefaultRenderer();
hr.setHorizontalAlignment(DefauTableCellRenderer.CENTER);
return tableHeader;
}
}
public TableCellRenderer getDefaultRenderer(class<?>)
}