学会用JScrollPane和Jtable以及table的Defaulttablemodel*
### 使用JScrollPane、JTable与DefaultTableModel实现动态表格管理 #### 一、引言 在开发桌面应用程序时,经常会遇到需要展示大量数据的情况,尤其是在进行项目管理或数据分析时。Java Swing提供了一系列强大的组件来帮助开发者处理这类问题。本文将详细介绍如何使用`JScrollPane`、`JTable`以及`DefaultTableModel`构建一个功能丰富的表格组件,实现数据的添加、删除、修改等功能。 #### 二、基础知识介绍 ##### 1. JTable简介 `JTable`是Swing提供的一个非常强大的表格组件,它可以显示二维数据,并且支持多种功能,如排序、编辑等。`JTable`通常配合`DefaultTableModel`使用,后者是一个模型类,负责存储和管理表格中的数据。 ##### 2. DefaultTableModel `DefaultTableModel`是`AbstractTableModel`的一个具体实现,用于存储表格的数据。它提供了添加行、列和单元格数据的方法,非常适合用于需要频繁更新数据的应用场景。 ##### 3. JScrollPane `JScrollPane`是一个可以滚动的面板,当表格内容较多时,使用`JScrollPane`可以实现滚动浏览的功能,避免窗口过大导致布局不合理。 #### 三、具体实现步骤 ##### 步骤1:创建基础框架 首先创建一个继承自`JFrame`的类,作为主窗口,并设置其布局方式为`BorderLayout`,以便于后续添加各个组件。 ```java public class Work_5_15 extends JFrame { // ... } ``` ##### 步骤2:定义组件 接下来,定义各种必要的Swing组件,如`JPanel`、`JLabel`、`JTextField`、`JButton`等,以及`JScrollPane`和`JTable`。 ```java private JPanel pnl_1, pnl_2; private JLabel lal; private JTextField tf; private JButton btn_Inquiry, btn_Add, btn_Delete, btn_Revise; private JScrollPane jsPnl; private JTable jTable; private Border lineborder; private Vector cols, cows; private Object[] date; public Work_5_15() { // 初始化组件 // ... } ``` ##### 步骤3:初始化界面布局 利用`BorderLayout`对各个组件进行布局,包括顶部的查询面板、底部的操作按钮面板等。 ```java // 初始化查询面板 pnl_1 = new JPanel(new FlowLayout()); pnl_1.setBorder(new TitledBorder("查询")); // ... // 初始化操作按钮面板 pnl_2 = new JPanel(); pnl_2.setBorder(new TitledBorder("操作")); // ... // 添加组件到主窗口 add(pnl_1, BorderLayout.NORTH); add(pnl_2, BorderLayout.SOUTH); ``` ##### 步骤4:创建JTable 通过`DefaultTableModel`实例化一个`JTable`对象,并将其放置在`JScrollPane`内,以便实现滚动功能。 ```java void creatJTable() { date = new Object[5]; DefaultTableModel defaulttablemodel = new DefaultTableModel() { // 可以在此处重写方法以自定义表格行为 }; jTable = new JTable(defaulttablemodel); jsPnl = new JScrollPane(jTable); add(jsPnl, BorderLayout.CENTER); } ``` ##### 步骤5:填充数据与功能实现 根据实际需求向`DefaultTableModel`中添加数据,并实现查询、添加、删除和修改数据的功能。 ```java // 示例代码:向表中添加数据 defaulttablemodel.addRow(new Object[]{"数据1", "数据2", "数据3", "数据4", "数据5"}); ``` #### 四、总结 通过以上步骤,我们成功地实现了使用`JScrollPane`、`JTable`以及`DefaultTableModel`构建动态表格的功能。这种表格不仅能够展示大量数据,还具备良好的交互性,非常适合用于项目管理等场景。在实际应用中,还可以根据需求进一步扩展功能,比如添加搜索过滤、排序等功能,提高用户体验。
package test_3;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.ImageIcon;
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.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
public class Work_5_15 extends JFrame {
// 声明面板
private JPanel pnl_1, pnl_2;
// 声明组件
private JLabel lal;
private JButton btn_Inquiry, btn_Add, btn_Delete, btn_Revise;
private JScrollPane jsPnl;
private JTable jTable;
private Border lineborder;
private Vector cows, cols;
private Object[] date;
public Work_5_15() {
// -------------------面板一-------------------------------
Border bordertitle_1 = new TitledBorder("查询面板");
// 定义边界线
lineborder = new LineBorder(Color.BLACK, 2);
// 定义面板一
pnl_1 = new JPanel(new FlowLayout());
pnl_1.setBackground(Color.RED);
pnl_1.setBorder(lineborder);
pnl_1.setToolTipText("查询面板");
pnl_1.setBorder(bordertitle_1);
// 定义面板一组件
lal = new JLabel("类型");
lal.setBorder(lineborder);
pnl_1.add(lal);
tf = new JTextField(8);
tf.setBorder(lineborder);
剩余5页未读,继续阅读
- 粉丝: 2
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助