首页 > 学院 > 开发设计 > 正文

TableModelEvent与ListSelectionEvent的用法

2019-11-06 06:30:54
字体:
来源:转载
供稿:网友

1.TableModelEvent

主要反应的事件是表格行,列的增加或减少,表格中数据的变化。

用于通知侦听器某一表模型已发生更改。模型事件描述 TableModel 的更改,并且对行和列的所有引用都在该模型的坐标系统中。可以根据构造方法中使用的参数,用 TableModelevent 指定以下更改类型:

TableModelEvent(source); // The data, ie. all rows changed TableModelEvent(source, HEADER_ROW); // Structure change, reallocate TableColumns TableModelEvent(source, 1); // Row 1 changed TableModelEvent(source, 3, 6); // Rows 3 to 6 inclusive changed TableModelEvent(source, 2, 2, 6); // Cell at (2, 6) changed TableModelEvent(source, 3, 6, ALL_COLUMNS, INSERT); // Rows (3, 6) were inserted TableModelEvent(source, 3, 6, ALL_COLUMNS, DELETE); // Rows (3, 6) were deleted

1.1 TableModelEvent的用法

table.getModel().addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent e) { int count = table.getSelectedRowCount(); setEnableWhenTableChanged(count); } });

2.ListSelectionEvent

主要反应的是用户选择的表格的行索引的变化。

表现选择中更改的特征的事件。该更改被限定于单个闭区间。该范围中至少一个索引的选择将要更改。合适的 ListSelectionModel 实现将使该范围尽可能的小。ListSelectionListeners 通常将查询事件源,以获得每个可能更改行的新选定状态。

2.1 ListSelectionModel

ListSelectionModel是ListSelectionEvent的事件源。

其中的setValueIsAdjusting方法 void setValueIsAdjusting(boolean valueIsAdjusting):

设置 valueIsAdjusting 属性,指示即将进行的选择更改是否应该被视为单个更改的一部分。此属性的值用于初始化生成 ListSelectionEvent 的 valueIsAdjusting 属性。

例如,如果选择被更新以响应一个用户的拖动,那么在拖动开始时,此属性被设置为 true;在拖动结束时被设置为 false。在拖动期间,侦听器接收 valueIsAdjusting 属性设置为 true 的事件。在拖动的最后,当更改终止时,侦听器接收一个值设置为 false 的事件。如果只在更改已终止时希望更新,则侦听器可以使用此模式。

将此属性设置为 true 将开始一系列将被视为单个更改一部分的更改。当该属性更改回 false 时,发送一个表现整个选择更改特征的事件(如果有),该事件的 valueIsAdjusting 属性设置为 false。

2.2 ListSelectionEvent的用法

其中涉及到 e.getValueIsAdjusting()

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if ( e.getValueIsAdjusting()) { return; } int count = table.getSelectedRowCount(); setEnableWhenTableChanged(count); } });
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表