Java Swing中的表格(JTable)和树(JTree)组件使用实例
一:表格(JTable):
1.基本概念:
表格(JTable)是Swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制.
2.常用构造方法:
* JTable():使用系统默认的模型创建一个JTable 实例.
* JTable(int numRows,int numColumns):创建一个使用DefaultTableModel 指定行、列的空表格。
* JTable(Object[ ][ ] rowData,Object[ ][ ] columnNames):创建一个显示二维数据的表格。
可以直接使用表格列名数组和表格数据数组来创建表格.
* JTable(TableModel dm):创建一个指定数据模式和默认字段模式的JTable 实例。
通常用数据模型类的对象来保存数据,而表格模型是通过表格列名数组和表格数据数组来创建的.
3.常用方法:
4.综合案例:
代码1:
public class JTableDemo1 extends JFrame {
//定义表格
JTable table;
//定义滚动条面板(用以使表格可以滚动)
JScrollPane scrollPane;
//定义数据模型类的对象(用以保存数据),
DefaultTableModel tableModel;
public JTableDemo1() {
super();
setTitle("表格模型与表格");
scrollPane = new JScrollPane();
// 定义表格列名数组
String[] columnNames = { "A", "B","C" };
// 定义表格数据数组
String[][] tableValues = { { "A1", "B1","C1" }, { "A2", "B2","C2" },
{ "A3", "B3","C3" }, { "A4", "B4","C4" } };
// 创建指定表格列名和表格数据的表格模型类的对象
tableModel = new DefaultTableModel(tableValues, columnNames);
// 创建指定表格模型的表格
table = new JTable(tableModel);
//设置 RowSorter(RowSorter 用于提供对 JTable 的排序和过滤)。
table.setRowSorter(new TableRowSorter<DefaultTableModel>(tableModel));
scrollPane.setViewportView(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);
setBounds(300, 200, 400, 300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new JTableDemo1();
}
}
截图1:
代码2:
import java.awt.*;
import javax.swing.*;
public class JTableDemo3 {
JFrame frame;
JPanel panel;
JScrollPane scrollPane1, scrollPane2, scrollPane3;
JTable jtable1, jtable2, jtable3;
public JTableDemo3() {
frame = new JFrame("JTableDemo");
jtable1 = new JTable(8, 6);
final Object[] columnNames = { "姓名", "性别", "家庭地址",// 列名最好用final修饰
"电话号码", "生日", "工作", "收入", "婚姻状况", "恋爱状况" };
Object[][] rowData = {
{ "ddd", "男", "江苏南京", "1378313210", "03/24/1985", "学生", "寄生中",
"未婚", "没" },
{ "eee", "女", "江苏南京", "13645181705", "xx/xx/1985", "家教", "未知",
"未婚", "好象没" },
{ "fff", "男", "江苏南京", "13585331486", "12/08/1985", "汽车推销员",
"不确定", "未婚", "有" },
{ "ggg", "女", "江苏南京", "81513779", "xx/xx/1986", "宾馆服务员",
"确定但未知", "未婚", "有" },
{ "hhh", "男", "江苏南京", "13651545936", "xx/xx/1985", "学生", "流放中",
"未婚", "无数次分手后没有" } };
jtable2 = new JTable(rowData, columnNames);
jtable3 = new JTable(rowData, columnNames);
jtable3.setPreferredScrollableViewportSize(new Dimension(600, 100));// 设置表格的大小
jtable3.setRowHeight(30);// 设置每行的高度为20
jtable3.setRowHeight(0, 20);// 设置第1行的高度为15
jtable3.setRowMargin(5);// 设置相邻两行单元格的距离
jtable3.setRowSelectionAllowed(true);// 设置可否被选择.默认为false
jtable3.setSelectionBackground(Color.white);// 设置所选择行的背景色
jtable3.setSelectionForeground(Color.red);// 设置所选择行的前景色
jtable3.setGridColor(Color.red);// 设置网格线的颜色
jtable3.selectAll();// 选择所有行
jtable3.setRowSelectionInterval(0, 2);// 设置初始的选择行,这里是1到3行都处于选择状态
jtable3.clearSelection();// 取消选择
jtable3.setDragEnabled(false);// 不懂这个
jtable3.setShowGrid(true);// 是否显示网格线
jtable3.setShowHorizontalLines(true);// 是否显示水平的网格线
jtable3.setShowVerticalLines(true);// 是否显示垂直的网格线
jtable3.setValueAt("tt", 0, 0);// 设置某个单元格的值,这个值是一个对象
jtable3.doLayout();
jtable3.setBackground(Color.cyan);
// JTable最好加在JScrollPane上以实现滚动效果
scrollPane1 = new JScrollPane(jtable1);
scrollPane2 = new JScrollPane(jtable2);
scrollPane3 = new JScrollPane(jtable3);
panel = new JPanel(new GridLayout(0, 1));
panel.setPreferredSize(new Dimension(600, 400));
panel.setBackground(Color.black);
panel.add(scrollPane1);
panel.add(scrollPane2);
panel.add(scrollPane3);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JTableDemo3();
}
}
截图2:
二:树(JTree):
1.基本概念:
树(JTree):将分层数据集显示为轮廓的控件。
2.常用构造方法:
JTree():返回带有示例模型的JTree。
JTree(Object[] value):返回JTree,指定数组的每个元素作为不被显示的新根节点的子节点。