【问题标题】:sorting arrows jtable column header排序箭头 jtable 列标题
【发布时间】:2011-12-06 09:47:11
【问题描述】:

有谁知道在对行进行排序时如何实现 JTable 列标题的上下箭头?

我已经做了自己的排序方式,它是通过监听鼠标的鼠标点击触发的,唯一剩下的就是标题上的此类箭头的可见性... p>

还有没有办法轻松实现可排序的 jtable?


我完成了所有的排序,最后一件事我不能做的是显示排序箭头..

我不想做一个新的,但我找不到是否有 setEnableArrow 或其他东西..

对此有什么想法吗?

【问题讨论】:

  • 好的,我现在只想实现箭头...

标签: java swing sorting jtable


【解决方案1】:

您可以查看DefaultTableCellHeaderRenderer 的源代码。在getTableCellRendererComponent 中,您可以看到这些图标的检索位置(例如UIManager.getIcon("Table.ascendingSortIcon"))以及该图标的设置方式(setIcon(sortIcon);

【讨论】:

  • @Steve 如果您下载官方 JDK,通常会包含源代码。或者只是一个快速的谷歌,你可以use this site instead
【解决方案2】:

这是实现排序的最简单方法:

    MyModel model = new MyModel();
    TableRowSorter<MyModel> sorter = new TableRowSorter<MyModel> (model);
    jTable1 = new javax.swing.JTable();
    jTable1.setRowSorter(sorter);
    jTable1.setModel(model);

【讨论】:

    【解决方案3】:

    如果您使用 JXtable 而不是 Jtable 会怎样?

    这些表格的标题中有箭头用于对它们进行排序,并且它们易于使用... 值得一试...

    【讨论】:

      【解决方案4】:

      我建议你不要搞砸DefaultTableCellHeaderRenderer。这个问题在于,它只是默认设置。每个 LaF 都应该创建这个的子类并在那里进行自己的渲染。我的建议是使用开箱即用提供此功能的 LaF。我认为 TinyLaf 可以做到这一点,但我不确定。您可以子类化DefaultTableCellHeaderRenderer,但您可能会将标题渲染与 LaF 的其余部分疏远。

      那么怎么做呢? Unicode 来拯救!请参阅geometric shapes 页面并使用您喜欢的内容。我选择了'\u25B2''\u25BC' 三角形。但后来我不得不隐藏可怕的 Swing 图标:

      UIManager.put( "Table.ascendingSortIcon", new EmptyIcon() );
      UIManager.put( "Table.descendingSortIcon", new EmptyIcon() );
      

      请注意以上几行!它们将替换您的应用程序中可能不是您想要的所有 JTables的图标.然后你应该可以看到类似的东西:

      空图标可以是:

      class EmptyIcon implements Icon, Serializable {
          int width = 0;
          int height = 0;
          public void paintIcon(Component c, Graphics g, int x, int y) {}
          public int getIconWidth() { return width; }
          public int getIconHeight() { return height; }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-01-02
        • 1970-01-01
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多