java swing制作表格_JAVA 创建窗口和程序片 Swing表格

这篇博客介绍了如何使用Java Swing中的JTable组件创建和管理表格。通过实现AbstractTableModel创建自定义的DataModel来控制表格数据,展示了如何设置单元格是否可编辑以及响应表格数据变化。示例代码创建了一个简单的表格并将其置于JScrollPane中,便于展示和操作。
摘要由CSDN通过智能技术生成

和树状物一样,表格在Swing相当的庞大和强大。它们最初有意被设计成以Java数据库连结(JDBC,在15章有介绍)为媒介的“网格”数据库接口,并且因此它们拥有的巨大的灵活性,使我们不再感到复杂。无疑,这是足以成为成熟的电子数据表的基础条件而且可能为整本教程提供很好的根据。但是,如果我们理解这个的基础条件,它同样可能创建相关的简单的Jtable。

JTable控制数据的显示方式,但TableModel控制它自己的数据。因此在我们创建JTable前,应先创建一个TableModel。我们可以全部地执行TableModel接口,但它通常从helper类的AbstractTableModel处简单地继承:

//: Table.java

// Simple demonstration of JTable

package c13.swing;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.table.*;

import javax.swing.event.*;

// The TableModel controls all the data:

class DataModel extends AbstractTableModel {

Object[][] data = {

{"one", "two", "three", "four"},

{"five", "six", "seven", "eight"},

{"nine", "ten", "eleven", "twelve"},

};

// Prints data when table changes:

class TML implements TableModelListener {

public void tableChanged(TableModelEvent e) {

for(int i = 0; i < data.length; i++) {

for(int j = 0; j < data[0].length; j++)

System.out.print(data[i][j] + " ");

System.out.println();

}

}

}

DataModel() {

addTableModelListener(new TML());

}

public int getColumnCount() {

return data[0].length;

}

public int getRowCount() {

return data.length;

}

public Object getValueAt(int row, int col) {

return data[row][col];

}

public void

setValueAt(Object val, int row, int col) {

data[row][col] = val;

// Indicate the change has happened:

fireTableDataChanged();

}

public boolean

isCellEditable(int row, int col) {

return true;

}

};

public class Table extends JPanel {

public Table() {

setLayout(new BorderLayout());

JTable table = new JTable(new DataModel());

JScrollPane scrollpane =

JTable.createScrollPaneForTable(table);

add(scrollpane, BorderLayout.CENTER);

}

public static void main(String args[]) {

Show.inFrame(new Table(),200,200);

}

} ///:~

DateModel包括一组数据,但我们同样能从其它的地方得到数据,例如从数据库中。构建器增加了一个TableModelListener用来在每次表格被改变后打印数组。剩下的方法都遵循Bean的命名规则,并且当JTable需要在DateModel中显示信息时调用。AbstractTableModel提供了默认的setValueAt()和isCellEditable()方法以防止修改这些数据,因此如果我们想修改这些数据,就必须过载这些方法。

一旦我们拥有一个TableModel,我们只需要将它分配给JTable构建器即可。所有有关显示,编辑和更新的详细资料将为我们处理。注意这个程序例子同样将JTable放置在JScrollPane中,这是因为JScrollPane需要一个特殊的JTable方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Swing 中可以使用 JTable 来展示表格数据,并且可以实现翻页功能。一般情况下,我们可以使用 JScrollPane 来包含 JTable,并且使用 JScrollBar 来实现表格的滚动和翻页。 以下是一个简单的例子,演示如何使用 JTable 和 JScrollPane 实现翻页功能: ``` import javax.swing.*; import javax.swing.table.DefaultTableModel; public class TablePaginationExample extends JFrame { private JTable table; private JScrollPane scrollPane; private JButton prevButton, nextButton; private int currentPage = 1; private int pageSize = 10; private int totalRows = 100; public TablePaginationExample() { super("Table Pagination Example"); // 创建表格数据模型 DefaultTableModel model = new DefaultTableModel(); model.addColumn("ID"); model.addColumn("Name"); model.addColumn("Age"); // 添加测试数据 for (int i = 1; i <= totalRows; i++) { model.addRow(new Object[]{i, "Name " + i, i % 30 + 20}); } // 创建表格并设置数据模型 table = new JTable(model); // 创建滚动面板并添加表格 scrollPane = new JScrollPane(table); // 创建翻页按钮 prevButton = new JButton("Prev"); nextButton = new JButton("Next"); // 添加事件处理程序 prevButton.addActionListener(e -> { if (currentPage > 1) { currentPage--; updateTable(); } }); nextButton.addActionListener(e -> { int totalPages = (int) Math.ceil(totalRows * 1.0 / pageSize); if (currentPage < totalPages) { currentPage++; updateTable(); } }); // 创建面板并添加组件 JPanel panel = new JPanel(); panel.add(prevButton); panel.add(nextButton); // 添加组件到窗口中 add(scrollPane); add(panel, "South"); // 设置窗口大小并显示 setSize(600, 400); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); // 初始更新表格 updateTable(); } private void updateTable() { int start = (currentPage - 1) * pageSize; int end = start + pageSize; end = Math.min(end, totalRows); table.setRowSelectionInterval(start, end - 1); table.scrollRectToVisible(table.getCellRect(start, 0, true)); } public static void main(String[] args) { new TablePaginationExample(); } } ``` 在这个例子中,我们使用 DefaultTableModel 来创建表格数据模型,并添加测试数据。然后我们创建 JTable 并设置数据模型,再将 JTable 添加到 JScrollPane 中。我们还创建了两个按钮来实现翻页功能,并添加了事件处理程序来处理按钮点击事件。最后,我们将 JScrollPane 和按钮添加到窗口中,并在窗口显示时初始更新表格。 在 updateTable() 方法中,我们根据当前页数和每页大小来计算需要显示的数据范围,并使用 setRowSelectionInterval() 方法选中相应的行,并使用 scrollRectToVisible() 方法将选中的第一行滚动到可见区域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值