自从我们更新到 JDK1.6 以来,我最近将应用程序中的 SwingX 库从版本 1.0 更新到了 1.6.2 。我知道排序已更改为重新使用 JDK 1.6 中引入的一些核心 JDK 组件。
但是,在版本 1.0 中,可以通过单击标题对列进行排序,随后的单击会恢复排序顺序,而 Shift 单击会删除排序并恢复到原始顺序。更新到1.6.2版本后,Shift点击行为不再存在。
小样本
import org.jdesktop.swingx.JXTable;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import java.awt.EventQueue;
public class JXTableSortingTest {
public static void main( String[] args ) {
EventQueue.invokeLater( new Runnable() {
public void run() {
initUI();
}
} );
}
private static void initUI(){
JFrame testFrame = new JFrame( "TestFrame" );
JXTable table = new JXTable( );
DefaultTableModel model =
new DefaultTableModel( new Object[][]{ new Object[]{"A"}, new Object[]{"B"}, new Object[]{"C"}, new Object[]{"D"}, new Object[]{"E"} }, new Object[]{"Click me"} );
table.setModel( model );
testFrame.getContentPane().add( new JScrollPane( table ) );
testFrame.pack();
testFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
testFrame.setVisible( true );
}
}
使用版本 1.0 运行此示例允许通过在标题上按住 Shift 键并单击来删除列排序,而在 1.6.2 版本中这不再起作用。
我检查了文档,但没有遇到任何可以重新打开此行为的内容。因此,在开始添加此功能之前,我想在这里询问是否有人知道重新引入 Shift 单击行为的简单方法
它不受支持,至少与 1.0 中的方式不支持。
最接近的默认支持是在 JTable 上设置 sortOrderCycle 属性,然后重复单击将循环显示被单击列的这些状态:
table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);
这与旧行为的不同之处在于旧行为已删除all排序 - 如果您需要,可以使用重置排序键的自定义 mouseListener 。
另外,您可以考虑在 SwingX 问题跟踪器中提交功能请求,并在 SwingLabs 论坛上开始讨论:我们决定放弃它的主要原因是与核心行为的一致性。由于没有人吠叫,所以就这样了:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)