主要反应的事件是表格行,列的增加或减少,表格中数据的变化。
用于通知侦听器某一表模型已发生更改。模型事件描述 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
主要反应的是用户选择的表格的行索引的变化。
表现选择中更改的特征的事件。该更改被限定于单个闭区间。该范围中至少一个索引的选择将要更改。合适的 ListSelectionModel 实现将使该范围尽可能的小。ListSelectionListeners 通常将查询事件源,以获得每个可能更改行的新选定状态。
ListSelectionModel是ListSelectionEvent的事件源。
其中的setValueIsAdjusting方法 void setValueIsAdjusting(boolean valueIsAdjusting):
设置 valueIsAdjusting 属性,指示即将进行的选择更改是否应该被视为单个更改的一部分。此属性的值用于初始化生成 ListSelectionEvent 的 valueIsAdjusting 属性。
例如,如果选择被更新以响应一个用户的拖动,那么在拖动开始时,此属性被设置为 true;在拖动结束时被设置为 false。在拖动期间,侦听器接收 valueIsAdjusting 属性设置为 true 的事件。在拖动的最后,当更改终止时,侦听器接收一个值设置为 false 的事件。如果只在更改已终止时希望更新,则侦听器可以使用此模式。
将此属性设置为 true 将开始一系列将被视为单个更改一部分的更改。当该属性更改回 false 时,发送一个表现整个选择更改特征的事件(如果有),该事件的 valueIsAdjusting 属性设置为 false。
其中涉及到 e.getValueIsAdjusting()
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if ( e.getValueIsAdjusting()) { return; } int count = table.getSelectedRowCount(); setEnableWhenTableChanged(count); } });新闻热点
疑难解答