jtable 订阅
JTable 用来显示和编辑常规二维单元表。有关面向任务的文档和使用 JTable 的示例,请参阅 The Java Tutorial 中的 How to Use Tables 一节。 展开全文
JTable 用来显示和编辑常规二维单元表。有关面向任务的文档和使用 JTable 的示例,请参阅 The Java Tutorial 中的 How to Use Tables 一节。
信息
参考文献
The Java Tutorial
出    处
How to Use Tables 一节
用    途
显示和编辑常规二维单元表
中文名
jtable
jtable基本信息
JTableextends JComponentimplements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible, RowSorterListenerJTable 有很多用来自定义其呈现和编辑的工具,同时提供了这些功能的默认设置,从而可以轻松地设置简单表。例如,要设置一个 10 行 10 列的表: TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 10; } public int getRowCount() { return 10;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 注意,如果要在单独的视图中(在 JScrollPane 外)使用 JTable 并显示表标题,则可以使用 getTableHeader() 获取并单独显示它。 要启用行的排序和过滤,请使用 RowSorter。可以通过以下两种方式之一设置一个行排序器。 直接设置 RowSorter。例如:table.setRowSorter(new TableRowSorter(model))。将 autoCreateRowSorter 属性设置为 true,从而 JTable 可用于创建 RowSorter。例如:setAutoCreateRowSorter(true)。设计使用 JTable 的应用程序时,务必要注意用来表示表数据的数据结构。DefaultTableModel 是一个模型实现,它使用一个 Vector 来存储所有单元格的值,该 Vector 由包含多个 Object 的 Vector 组成。除了将数据从应用程序复制到 DefaultTableModel 中之外,还可以用 TableModel 接口的方法来包装数据,这样可将数据直接传递到 JTable,如上例所示。这通常可以提高应用程序的效率,因为模型可以自由选择最适合数据的内部表示形式。在决定使用 AbstractTableModel 还是使用 DefaultTableModel 方面有一个好的实践经验,即在创建子类时使用 AbstractTableModel 作为基类,在不需要创建子类时则使用 DefaultTableModel。 源分布演示部分中的 "TableExample" 目录给出了许多 JTable 用法的完整示例,包括如何使用 JTable 来提供一个可编辑的数据视图(数据取自数据库),以及如何修改显示的列以使用指定的渲染器和编辑器。 JTable 使用专有的整数来引用它所显示的模型的行和列。JTable 采用表格的单元格范围,并在绘制时使用 getValueAt(int, int) 从模型中获取值。务必记住各种 JTable 方法所返回的列和行索引是就 JTable(视图)而言的,不一定是模型所使用的那些索引。 默认情况下,在 JTable 中对列进行重新安排,这样在视图中列的出现顺序与模型中列的顺序不同。但这根本不影响模型的实现:当列重新排列时,JTable 在内部保持列的新顺序,并在查询模型前转换其列索引。 因此编写 TableModel 时,不必侦听列的重排事件,因为不管视图怎样,模型都将在其自己的坐标系统被查询。在示例部分中有一个排序算法的演示,此演示正是使用了此技术在另一个坐标系统中进行排序,其中更改了行顺序,没有更改列顺序。 类似地,使用 RowSorter 提供的排序和过滤功能时,底层 TableModel 不需要知道怎样进行排序,RowSorter 将处理它。对底层 TableModel 使用 JTable 的基于行的方法时,必须进行坐标转换。所有基于 JTable 行的方法都是就 RowSorter 而言的,不一定与底层 TableModel 的方法相同。例如,选择始终是就 JTable 而言的,因此使用 RowSorter 时,需要使用 convertRowIndexToView 或 convertRowIndexToModel 进行转换。以下代码显示了如何将 JTable 的坐标转换为底层模型的坐标
收起全文
精华内容
下载资源
问答
  • jtable
    2021-03-20 08:18:48

    使此表布局其行和列。重写的此方法可调整列的大小,以适应包含的父级的大小更改。调整表中一列或多列的大小,以便所有此

    JTable 列的总宽度等于表的宽度。

    开始布局之前,此方法获取 tableHeader 的 resizingColumn。当由于要调整封闭窗口的大小而调用此方法时,resizingColumn 为 null。这意味着调整大小发生在 JTable 的“外部”,并且更改(或 "delta" )应该分布到所有列,无论此 JTable 的自动调整大小模式如何。

    如果 resizingColumn 不为 null,则它是发生大小更改的表中的一列,而不是表本身。在这种情况下,自动调整大小模式控制额外(或不足)空间在可用列之间的分布方式。

    该模式有:

    AUTO_RESIZE_OFF:不自动调整列的宽度。当列的总宽度超过 Viewport 的宽度时,使用水平滚动条来适应列的宽度。如果 JTable 没有封闭在 JScrollPane 中,则可能导致该表的一部分不可见。

    AUTO_RESIZE_NEXT_COLUMN:使用被调整列的下一列。这导致相邻单元格之间的“边界”或分隔栏是可独立调整的。

    AUTO_RESIZE_SUBSEQUENT_COLUMNS:使用被调整列后面的所有列来吸收所作的更改。这是默认行为。

    AUTO_RESIZE_LAST_COLUMN:只自动调整最后一列的大小。如果最后一列的边界导致无法分配所需的大小,则将最后一列的宽度设置为适当的界限并且不再做进一步的调整。

    AUTO_RESIZE_ALL_COLUMNS:将 delta 分散在 JTable 中的所有列之间,包括正在被调整的列。

    注:当 JTable 调整列宽时,它绝对遵守其最小值和最大值。但是即使在调用此方法后,列的总宽度仍然可能不等于表的宽度。发生这种情况时,JTable 不会进入 AUTO_RESIZE_OFF 模式来生成一个滚动条,或者中断其当前自动调整模式的其他提交,相反,它允许其边界设置为大于(或小于)最大总宽度(或最小总宽度),这意味着要么没有足够的空间来显示所有的列,要么就是列不能填满 JTable 的边界。这将分别导致在绘制期间,某些列将被剪切掉,或者某个区域将被绘制为 JTable 的背景色。

    用于在可用列之间分布 delta 的机制是由 JTable 类中的一个私有方法提供的:

    adjustSizes(long targetSize, final Resizable3 r, boolean inverse) 以下部分是对它的解释。

    Resizable3 是一个私有接口,它允许包含元素(具有大小、首选大小、最大大小和最小大小)集合的任何数据结构可以通过该算法来操作其元素。

    分布 delta

    概述

    将 r 中各元素的目标大小与首选大小总和之间的差值称为 "DELTA"。单独的大小通过将原始首选大小加上 DELTA 的共享部分来计算,该共享部分基于每个首选大小到其限定边界的距离(最小值或最大值)。

    定义

    单独的约束称为 min[i]、max[i] 和 pref[i]。

    它们相应的和称为:MIN、MAX 和 PREF。

    用以下公式计算每个新大小:

    size[i] = pref[i] + delta[i] 其中每个单独的 delta[i] 根据以下条件计算:

    如果 (DELTA < 0),则处于收缩模式,其中:

    DELTA

    delta[i] = ------------ * (pref[i] - min[i])

    (PREF - MIN) 如果 (DELTA > 0),则处于扩展模式,其中:

    DELTA

    delta[i] = ------------ * (max[i] - pref[i])

    (MAX - PREF)

    总体效果是总大小向总的最小值或最大值移动相同的百分比 k,此百分比确保适应所需的间距,即 DELTA。

    详细信息

    估计此处给出的公式计算易受累积舍入误差的影响,该误差是由此操作的有限精度(使用 int)引起的。为了处理此问题,要经常重新计算上述乘数,这可将以前迭代中的舍入误差考虑在内。结果是一个生成一组整数的算法,这组整数值的和恰好等于提供的 targetSize,这是通过将舍入误差均匀分散到给定元素上来实现的。

    何时选中 MAX 和 MIN 边界

    当 targetSize 处于 [MIN, MAX] 范围外时,算法将所有大小设置为其适合的限定值(最大值或最小值)。

    更多相关内容
  • Java-JTable 使用 Java 的 JTable 预览数据。 要操作 JTable,我们需要使用 JTable 的模型,特别是 DefaultTableModel 来操作行和 TableColumnModel 来操作列。 这个简单的示例将向您展示如何将 JTable 集成到您的...
  • 主要介绍了Java表格JTable代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本篇文章是对JTable的列宽与内容自适应的实现方法进行了详细的分析介绍,需要的朋友参考下
  • 主要介绍了Java Swing实现JTable检测单元格数据变更事件的方法,结合完整实例形式分析了Swing实现JTable检测单元格数据变更事件过程中出现的问题与相关解决方法,需要的朋友可以参考下
  • JTable使用自定义数据类型实现Boolean类型显示成Checkbox形式,并可以更加勾选的值改变背景色。
  • JTable动态刷新数据

    2018-05-20 17:55:23
    JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据
  • JTable中的内容导出到Excel保存,支持更改保存的EXcel名字
  • java读sqlite数据库到JTable(解决sqlite中文乱码问题).docx
  • Mysql数据库内容展示写死版 import javax.swing.*; import java.awt.*; import java.sql.*; public class XieSiBan extends JFrame { public static void main(String[] args) { try { // 加载MySql驱动 ...
  • 以下是对可视化Swing中JTable控件绑定SQL数据源的两种方法进行了详细的分析介绍,需要的朋友可以过来参考一下
  • JTable-开源

    2021-04-26 16:55:04
    桌上游戏模拟器。 您可以玩简单的纸牌游戏,甚至可以... JTable是一个通用模拟器。 您可以使用编辑器轻松创建新游戏。 通过互联网(使用Hamachi:http://www.hamachi.com)与多达12位玩家一起玩您想要的每个游戏,或者
  • jtable锁定行列

    2017-05-03 15:03:22
    封装JTable同时锁定多行多列效果,通过多层布局实现,不需要多个数据集,使用简单,不用对现有代码做改动。
  • 内容不再仅仅是JTable表格有关的知识,还有有关jdbc连接数据库,把数据库中的信息显示在表格中,并且可以做到,在eclipse中运行得到窗口显示信息,可以增删该除,修改后的数据库信息 可以在数据库中表里得到体现,...
  • 我认为这是您正在寻找的[JTable]。干杯,Sudhakar
  • 用改写 DefaultCellEditor 和 TableCellRenderer的方法实现,主要代码: table.getColumnModel().getColumn(2).setCellEditor(new MyButtonEditor()); table.getColumnModel().getColumn(2).setCellRenderer...
  • jtable中放多个Button.rar

    2019-08-12 20:45:55
    swing中jtable的一个单元格多放多个button的实现方式
  • JTable实现下拉动态加载数据,滑动动态加载数据,纯原生态java。
  • NULL 博文链接:https://sulifeng.iteye.com/blog/624076
  • 主要介绍了Java Swing中的表格(JTable)和树(JTree)组件使用实例,本文同时讲解了表格和树的基本概念、常用方法、代码实例,需要的朋友可以参考下
  • 前段时间无聊研究一下java swing 的JTable表格 做了一下在表格内实现的增删盖查,数据库用的是mysql8.0
  • 本文将为大家介绍下在jtable列中如何自定义button,下面有一个不错的示例,感兴趣的朋友可以参考下
  • 主要介绍了Java Swing组件编程之JTable表格用法,结合实例形式详细分析了Swing组件中JTable表格的常见定义与使用方法,需要的朋友可以参考下
  • java jtable

    2019-04-02 01:51:18
    NULL 博文链接:https://nwwolf.iteye.com/blog/1451930
  • 主要代码: DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setColumnIdentifiers(new String[] {"标题一", "标题二", "标题三"});
  • jtable的增删改查

    2015-12-25 10:25:27
    这个是个小案例,里面包含了jtable的增删改查以及连接了sqlserver2008,显示的数据进行了分页,以及对数据库的操作都进行了log4j的日志记录
  • JTable表头合并

    2015-07-30 18:17:39
    JTable表头合并, 很方便使用,swing的控件,下载下来,直接导入工程就可以使用了,接口封装的很好。想要什么样的表头都可以满足你
  • JTable表格

    2019-08-08 01:39:05
    NULL 博文链接:https://makeitjoy.iteye.com/blog/2172190
  • java取出mysql中数据,显示在jtable里面

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,230
精华内容 5,292
关键字:

jtable