Java Swing JTable(下)

简介: Java Swing JTable(下)

JTable 行列 相关设置:

// 设置所有行的行高

void setRowHeight(int rowHeight)

// 设置指定行的行高

void setRowHeight(int row, int rowHeight)

/**

  • 设置当手动改变某列列宽时,其他列的列宽自动调整模式,
  • 可选值:
JTable.AUTO_RESIZE_ALL_COLUMNS 在所有的调整大小操作中,按比例调整所有的列。
JTable.AUTO_RESIZE_LAST_COLUMN 在所有的调整大小操作中,只对最后一列进行调整。
JTable.AUTO_RESIZE_NEXT_COLUMN 在 UI 中调整了一个列时,对其下一列进行相反方向的调整。
JTable.AUTO_RESIZE_OFF 不自动调整列的宽度;使用滚动条。
JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS 在 UI 调整中,更改后续列以保持总宽度不变;此为默认行为。

*/

void setAutoResizeMode(int mode)


/*


调整列宽

*/

// 先获取到某列

TableColumn tableColumn = jTable.getColumnModel().getColumn(int columnIndex);

// 设置列的宽度、首选宽度、最小宽度、最大宽度

tableColumn.setWidth(int width);

tableColumn.setPreferredWidth(int preferredWidth);

tableColumn.setMinWidth(int minWidth);

tableColumn.setMaxWidth(int maxWidth);


// 调整该列的列宽,以适合其标题单元格的宽度。

tableColumn.sizeWidthToFit();


// 是否允许手动改变该列的列宽

tableColumn.setResizable(boolean isResizable);


// 设置该列的表头名称

tableColumn.setHeaderValue(Object headerValue);

数据相关操作:

表格数据的简单设置和获取

// 设置表格中指定单元格的数据

jTable.getModel().setValueAt(Object aValue, int rowIndex, int columnIndex);


// 获取表格中指定单元格的数据

Object value = jTable.getModel().getValueAt(int rowIndex, int columnIndex);

创建带滚动条的表格

  • 效果
  • image.png
  • 创建带滚动条的表格基本步骤:


创建表格

JTable table = new JTable(…);


设置表格相关数据

// 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)

table.setPreferredScrollableViewportSize(new Dimension(int width, int height));


创建滚动面板,把表格放到滚动面板中

image.png

再把滚动面板添加到其他容器中显示

image.png

TableModel

TableModel 接口指定了 JTable 用于询问表格式数据模型的方法。TableModel 封装了表格中的各种数据,为表格显示提供数据。上面案例中直接使用行数据和表头创建表格,实际上JTable 内部自动将传入的行数据和表头封装成了 TableModel。


只要数据模型实现了 TableModel 接口,就可以通过以下两行代码设置 JTable 显示该模型:


TableModel myData = new MyTableModel();

JTable table = new JTable(myData);

TableModel 接口中的方法:

/** 返回总行数 */
public int getRowCount();
/** 返回总列数 */
public int getColumnCount();
/** 返回指定列的名称(表头名称) */
public String getColumnName(int columnIndex);
/** 针对列中所有的单元格值,返回最具体的超类。JTable 使用此方法来设置列的默认渲染器和编辑器。 */
public Class<?> getColumnClass(int columnIndex);

判断指定单元格是否可编辑

如果行和列中的单元格是可编辑的,则返回true。否则,在单元格上调用setValueAt将无效。

注意:该列是按表视图的显示顺序指定的,而不是按TableModel的列顺序指定的。这是一个重要的区别,因为当用户重新排列表中的列时,视图中给定索引处的列将发生变化。同时,用户的操作永远不会影响模型的列顺序。

image.png

/** 获取指定单元格的值 */

public Object getValueAt(int rowIndex, int columnIndex);


/** 设置指定单元格的值 */

public void setValueAt(Object aValue, int rowIndex, int columnIndex);


/** 添加表格模型监听器 */

public void addTableModelListener(TableModelListener l);


/** 移除表格模型监听器 */

public void removeTableModelListener(TableModelListener l);

}


JRE 中常用的已实现 TableModel 接口的类有两个:


(1)javax.swing.table.AbstractTableModel


此抽象类为 TableModel 接口中的大多数方法提供默认实现。它负责管理侦听器,并为生成 TableModelEvents 以及将其调度到侦听器提供方便。要创建一个具体的 TableModel 作为 AbstractTableModel 的子类,只需提供对以下三个方法的实现:

public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);

(2)javax.swing.table.DefaultTableModel


这是 TableModel 的一个实现,它使用一个 Vector 来存储单元格的值对象,该 Vector 由多个 Vector 组成。DefaultTableModel 还增加了许多方便操作表格数据的方法,例如 支持 添加 和 删除 行列 等操作。


目录
相关文章
|
8天前
|
Java 数据安全/隐私保护
利用Java图形化界面组件Swing写一个简易的登录界面
利用Java图形化界面组件Swing写一个简易的登录界面
22 1
|
15天前
|
Java Windows
基于java Swing编写扫雷游戏设计实现(已调试)
基于java Swing编写扫雷游戏设计实现(已调试)
24 1
|
22天前
|
Java
Java Swing模拟水波纹扩散效果动画
Java Swing模拟水波纹扩散效果动画
25 6
|
22天前
|
Java
JAVA Swing自定义JScorllPanel
JAVA Swing自定义JScorllPanel
13 1
|
1天前
|
前端开发 Java UED
Java中的图形用户界面编程:Swing与JavaFX的比较与应用
Java中的图形用户界面编程:Swing与JavaFX的比较与应用
|
23天前
|
Java
【Gloomyfish】Java Swing 实现实际大小到全屏切换
【Gloomyfish】Java Swing 实现实际大小到全屏切换
13 1
|
15天前
|
存储 设计模式 前端开发
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
|
22天前
|
Java
Java Swing 层次面板(JLayeredPanel) Demo
Java Swing 层次面板(JLayeredPanel) Demo
12 0
|
23天前
|
缓存 Java
Java Swing 2D系统属性参数详解
Java Swing 2D系统属性参数详解
18 0
|
1月前
|
设计模式 Java 开发者
Java一分钟之-Swing组件:JTable, JTree, JTextArea
本文介绍了Java Swing的三个关键组件:`JTable`、`JTree`和`JTextArea`,用于数据展示和用户输入。`JTable`展示二维数据,如表格;`JTree`展示层次结构数据,如文件系统;`JTextArea`则用于多行文本输入和显示。每个组件都提供了示例代码,并列出常见问题及避免方法,如数据源未设置、滚动面板缺失等。理解并掌握这些组件,能帮助开发者创建高效用户界面。
40 0