`
hongyong
  • 浏览: 16750 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • songshuang: 您好~诚挚邀请您加入ITeye HTML5群组,交流分享HTM ...
    Html5

Jtable冻结

    博客分类:
  • Java
阅读更多

網上看到的凍結Table列的代碼,是通過兩個Table來實現。現有一個第三方控件包jsuit,有jpvTableView控件,可以實現凍結的功能,但是沒有凍結表頭。

 

  1. importjava.awt.BorderLayout;
  2. importjava.awt.event.WindowAdapter;
  3. importjava.awt.event.WindowEvent;
  4. importjavax.swing.*;
  5. importjavax.swing.event.ListSelectionEvent;
  6. importjavax.swing.event.ListSelectionListener;
  7. importjavax.swing.table.AbstractTableModel;
  8. publicclassJtableTestextendsJFrame{
  9. privatestaticfinallongserialVersionUID=1L;
  10. Object[][]data;
  11. Object[]column;
  12. JTablefixedTable,table;
  13. publicJtableTest(){
  14. super("FixedColumnExample");
  15. setSize(400,150);
  16. data=newObject[][]{{"1","11","A","","","","",""},
  17. {"2","22","","B","","","",""},
  18. {"3","33","","","C","","",""},
  19. {"4","44","","","","D","",""},
  20. {"5","55","","","","","E",""},
  21. {"6","66","","","","","","F"}};
  22. column=newObject[]{"fixed1","o","a","b","c","d","e","f"};
  23. AbstractTableModelfixedModel=newAbstractTableModel(){
  24. privatestaticfinallongserialVersionUID=1L;
  25. publicintgetColumnCount(){
  26. return1;
  27. }
  28. publicintgetRowCount(){
  29. returndata.length;
  30. }
  31. publicStringgetColumnName(intcol){
  32. return(String)column[col];
  33. }
  34. publicObjectgetValueAt(introw,intcol){
  35. returndata[row][col];
  36. }
  37. };
  38. AbstractTableModelmodel=newAbstractTableModel(){
  39. privatestaticfinallongserialVersionUID=1L;
  40. publicintgetColumnCount(){
  41. returncolumn.length-2;
  42. }
  43. publicintgetRowCount(){
  44. returndata.length;
  45. }
  46. publicStringgetColumnName(intcol){
  47. return(String)column[col+1];
  48. }
  49. publicObjectgetValueAt(introw,intcol){
  50. returndata[row][col+1];
  51. }
  52. publicvoidsetValueAt(Objectobj,introw,intcol){
  53. data[row][col+1]=obj;
  54. }
  55. publicbooleanCellEditable(introw,intcol){
  56. returntrue;
  57. }
  58. };
  59. fixedTable=newJTable(fixedModel);
  60. fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  61. fixedTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  62. fixedTable.getSelectionModel().addListSelectionListener(
  63. newListSelectionListener(){
  64. publicvoidvalueChanged(ListSelectionEventarg0){
  65. checkSelection(true);
  66. }
  67. });
  68. table=newJTable(model);
  69. table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  70. table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  71. table.getSelectionModel().addListSelectionListener(
  72. newListSelectionListener(){
  73. publicvoidvalueChanged(ListSelectionEventarg0){
  74. checkSelection(false);
  75. }
  76. });
  77. JViewportviewport=newJViewport();
  78. viewport.setView(fixedTable);
  79. viewport.setPreferredSize(fixedTable.getPreferredSize());
  80. JScrollPanescroll=newJScrollPane(table);
  81. scroll.setRowHeaderView(viewport);
  82. scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER,fixedTable
  83. .getTableHeader());
  84. getContentPane().add(scroll,BorderLayout.CENTER);
  85. }
  86. privatevoidcheckSelection(booleanisFixedTable){
  87. intfixedSelectedIndex=fixedTable.getSelectedRow();
  88. intselectedIndex=table.getSelectedRow();
  89. if(fixedSelectedIndex!=selectedIndex){
  90. if(isFixedTable){
  91. table.setRowSelectionInterval(fixedSelectedIndex,
  92. fixedSelectedIndex);
  93. }else{
  94. fixedTable
  95. .setRowSelectionInterval(selectedIndex,selectedIndex);
  96. }
  97. }
  98. }
  99. publicstaticvoidmain(String[]args){
  100. JtableTestframe=newJtableTest();
  101. frame.addWindowListener(newWindowAdapter(){
  102. publicvoidwindowClosing(WindowEvente){
  103. System.exit(0);
  104. }
  105. });
  106. frame.setVisible(true);
  107. }
  108. }
分享到:
评论

相关推荐

    冻结table的行和列

    在Java环境中,可能涉及到JavaFX的TableView或Swing的JTable组件。 压缩包子文件的文件名称列表中有"冻结行和列.html"和"freeze 第一列.html",这可能分别代表了一个示例网页,展示了如何冻结整个表格的行和仅冻结...

    Swing JTable工厂(table4j)

    4. **高级功能**:如行列拖放、分页、冻结列、合并单元格、自定义列宽等。 5. **事件处理**:可能提供了更加方便的事件监听和处理机制,使得对用户交互的响应更加简单。 6. **国际化支持**:方便进行多语言切换。 7....

    MyJTable-开源

    还有冻结列和行的功能,这在处理大型表格时非常有用,可以保持关键列或行始终可见。此外,它还支持多选、行列合并、以及自定义快捷键等,进一步提高了操作效率。 压缩包中的"myjtable-1.1"可能包含了MyJTable的源...

    java语言程序实现购物图像界面

    9. **线程处理**:为了保证用户界面的响应性,耗时操作(如从数据库读取大量数据)应放在后台线程执行,防止UI冻结。可以使用`SwingWorker`类来实现这一目的。 通过上述技术,我们可以构建出一个基本的Java Swing...

    Swing使用帮助心得

    为了解决Swing组件在执行耗时任务时可能导致UI冻结的问题,Swing提供了一个名为SwingWorker的类。它允许在后台线程中执行计算,然后在事件调度线程中更新UI,确保了界面的响应性。 10. **JTable和TableModel**: ...

    javaSE swing 做的windows资源管理器含说明文档论文

    4. **线程处理**:由于文件操作可能耗时,为了保持UI的响应性,可能需要在后台线程(如SwingWorker)执行这些任务,防止UI冻结。 5. **对话框和通知**:为了与用户进行交互,应用可能会使用JOptionPane来显示警告或...

    JAVA_Test.zip_GUI test

    8. **多线程**:如果检索过程可能导致界面冻结,那么可能采用了多线程来异步处理查询请求,保持GUI的响应性。 9. **异常处理**:在Java编程中,良好的异常处理策略是必不可少的,尤其是在与数据库交互和文件操作时...

    java swing开发进销存管理系统

    8. **线程管理**:为了保持用户界面的响应性,耗时的操作如数据库查询应放在后台线程(如SwingWorker)执行,防止UI冻结。 9. **异常处理**:良好的错误处理是任何应用的基础。Java的try-catch-finally语句块用于...

    Java课程设计-基于Java swing的图书管理系统(源码+数据库+安装配置说明).rar

    - Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更多美观且自定义程度高的组件,如JFrame、JButton、JLabel、JTable等。 - Swing使用事件监听机制,通过事件处理器(Event Handler)处理用户交互,...

    Java Swing(第二版)

    10. **SwingWorker**:SwingWorker是用于在后台线程执行耗时任务的类,防止UI冻结。它支持进度报告和取消操作,使GUI保持响应性。 通过阅读《Java Swing(第二版)》的源码,开发者不仅可以深入理解Swing的工作原理,...

    swing hacks 文档+code

    8. 多线程和并发:在Swing应用中,正确处理多线程至关重要,因为它可以避免UI冻结。文档会介绍如何在Swing中安全地使用线程,并展示最佳实践。 9. 示例代码:压缩包中的"swing-hacks-examples-20060109.zip"包含了...

    精通Java Swing程序设计_10844177

    此外,Swing还支持SwingWorker,这是一个用于在后台线程执行耗时任务的类,避免了用户界面的冻结。 总的来说,"精通Java Swing程序设计"涵盖了从基础组件的使用到高级特性的探索,对于初学者来说,理解并掌握这些...

    Swing线程的最后讨论 -- 利用异步模型

    当模型涉及到远程数据源或长时间运行的任务时,这可能导致界面冻结。为了解决这一问题,文章提出了两种方法: 1. **动态树(DynamicTree)**:这是一个使用后台线程来动态展开`JTree`节点的示例。动态树采用了分裂...

    深入浅出Java Swing程序设计

    此外,Swing支持SwingWorker,使得在GUI线程之外执行耗时任务成为可能,避免了UI冻结。 七、国际化与 Accessibility Swing支持应用的国际化,允许开发者为不同语言的用户提供界面。同时,Swing组件遵循无障碍标准,...

    对Swing的一点理解(一)

    6. JTable和JTree:Swing提供了用于数据展示的高级组件,如JTable用于显示表格数据,JTree用于呈现层次结构数据。 博文可能还会涉及以下知识点: 1. Layout Managers:Swing使用布局管理器(如FlowLayout、...

    SWING

    在Swing中,还有许多高级特性,如拖放支持、打印功能、定时器(Timer)以及对SwingWorker的支持,后者允许在后台线程中执行耗时操作,防止用户界面冻结。 总的来说,Swing为Java开发者提供了一套全面的工具,用于...

    java swing

    9. **SwingWorker**:SwingWorker 类为在事件调度线程之外执行耗时任务提供了便利,确保UI的响应性,防止“冻结”现象。 在《Java图形设计卷2:Swing》这本书中,你将深入学习如何使用这些特性来创建功能丰富的Java...

    精通swing程序设计.rar

    8. **SwingWorker**:SwingWorker是处理后台任务的类,解决了Swing组件在事件调度线程上执行长时间任务导致界面冻结的问题。通过使用SwingWorker,开发者可以确保界面的响应性。 9. **国际化和本地化**:Swing支持...

Global site tag (gtag.js) - Google Analytics