概要

表格(JTable)是我们在GUI开发中很常用的一个组件。表格在可视化编程中用于显示信息,在Swing编程中非常有用,当要显示大量数据时,用表格可以清晰的显示出来。

构造方法:

方法名 说明
JTable()    构造一个默认的 JTable,使用默认的数据模型、默认的列模型和默认的选择模型对其进行初始化
JTable(int numRows, int numColumns) 使用 DefaultTableModel 构造具有 numRows 行和 numColumns 列个空单元格的 JTable
JTable(Object[][] rowData, Object[] columnNames)    构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames
JTable(TableModel dm)   构造一个 JTable,使用数据模型 dm、默认的列模型和默认的选择模型对其进行初始化
JTable(TableModel dm, TableColumnModel cm)  构造一个 JTable,使用数据模型 dm、列模型 cm 和默认的选择模型对其进行初始化
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)   构造一个 JTable,使用数据模型 dm、列模型 cm 和选择模型 sm 对其进行初始化
JTable(Vector rowData, Vector columnNames)  构造一个 JTable 来显示 Vector 所组成的 Vector rowData 中的值,其列名称为 columnNames

使用示例:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
//维护表格
public class JTableDefaultTableModelTest extends JFrame{private DefaultTableModel tableModel;   //表格模型对象private JTable table;private JTextField aTextField;private JTextField bTextField;public JTableDefaultTableModelTest(){super();setTitle("表格");setBounds(100,100,500,400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);String[] columnNames = {"A","B"};   //列名String [][]tableVales={{"A1","B1"},{"A2","B2"},{"A3","B3"},{"A4","B4"},{"A5","B5"}}; //数据tableModel = new DefaultTableModel(tableVales,columnNames);table = new JTable(tableModel);JScrollPane scrollPane = new JScrollPane(table);   //支持滚动getContentPane().add(scrollPane,BorderLayout.CENTER);//jdk1.6//排序://table.setRowSorter(new TableRowSorter(tableModel));table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  //单选table.addMouseListener(new MouseAdapter(){    //鼠标事件public void mouseClicked(MouseEvent e){int selectedRow = table.getSelectedRow(); //获得选中行索引Object oa = tableModel.getValueAt(selectedRow, 0);Object ob = tableModel.getValueAt(selectedRow, 1);aTextField.setText(oa.toString());  //给文本框赋值bTextField.setText(ob.toString());}});scrollPane.setViewportView(table);final JPanel panel = new JPanel();getContentPane().add(panel,BorderLayout.SOUTH);panel.add(new JLabel("A: "));aTextField = new JTextField("A4",10);panel.add(aTextField);panel.add(new JLabel("B: "));bTextField = new JTextField("B4",10);panel.add(bTextField);final JButton addButton = new JButton("添加");   //添加按钮addButton.addActionListener(new ActionListener(){//添加事件public void actionPerformed(ActionEvent e){String []rowValues = {aTextField.getText(),bTextField.getText()};tableModel.addRow(rowValues);  //添加一行int rowCount = table.getRowCount() +1;   //行数加上1aTextField.setText("A"+rowCount);bTextField.setText("B"+rowCount);}});panel.add(addButton);  final JButton updateButton = new JButton("修改");   //修改按钮updateButton.addActionListener(new ActionListener(){//添加事件public void actionPerformed(ActionEvent e){int selectedRow = table.getSelectedRow();//获得选中行的索引if(selectedRow!= -1)   //是否存在选中行{//修改指定的值:tableModel.setValueAt(aTextField.getText(), selectedRow, 0);tableModel.setValueAt(bTextField.getText(), selectedRow, 1);//table.setValueAt(arg0, arg1, arg2)}}});panel.add(updateButton);final JButton delButton = new JButton("删除");delButton.addActionListener(new ActionListener(){//添加事件public void actionPerformed(ActionEvent e){int selectedRow = table.getSelectedRow();//获得选中行的索引if(selectedRow!=-1)  //存在选中行{tableModel.removeRow(selectedRow);  //删除行}}});panel.add(delButton);}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubJTableDefaultTableModelTest jTableDefaultTableModelTest = new JTableDefaultTableModelTest();jTableDefaultTableModelTest.setVisible(true);}}

运行效果

JAVA图形界面(GUI)之表格-编程之家

参考地址

https://blog.csdn.net/jianggujin/article/details/50452544