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 还增加了许多方便操作表格数据的方法,例如 支持 添加 和 删除 行列 等操作。


目录
打赏
0
0
0
0
1949
分享
相关文章
|
4月前
|
漂亮不是梦!Java Swing美化攻略
Java Swing 是一个为 Java 设计的 GUI 工具包,提供文本框、按钮等组件。尽管其外观可定制,通过 Look and Feel(LAF)机制改变应用风格,如 Darcula 和 FlatLaf,但现已淡出主流视野,主要应用于 IDE 领域,如 IntelliJ IDEA 和 Eclipse。相比其他 GUI 框架,Swing 的发展前景有限。
124 1
|
8月前
|
【Java】Java Swing 图书管借阅管理系统(源码+论文)【独一无二】
【Java】Java Swing 图书管借阅管理系统(源码+论文)【独一无二】
384 0
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
201 0
利用Java图形化界面组件Swing写一个简易的登录界面
利用Java图形化界面组件Swing写一个简易的登录界面
148 1
|
10月前
|
Java Swing模拟水波纹扩散效果动画
Java Swing模拟水波纹扩散效果动画
87 6
|
10月前
|
基于java Swing编写扫雷游戏设计实现(已调试)
基于java Swing编写扫雷游戏设计实现(已调试)
115 1
|
10月前
|
JAVA Swing自定义JScorllPanel
JAVA Swing自定义JScorllPanel
75 1
Java中的图形用户界面编程:Swing与JavaFX的比较与应用
Java中的图形用户界面编程:Swing与JavaFX的比较与应用
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程
[笔记] 疯狂JAVA讲义(第3版)第12章 Swing编程