【问题标题】:Re-firing MouseListener event重新触发 MouseListener 事件
【发布时间】:2010-07-13 01:13:46
【问题描述】:

每当用户单击表格列进行排序时,我都需要存储鼠标单击事件。

我基本上是在保存 MouseEven:

public void mouseClicked(MouseEvent e_)

我将 e_ 存储在一个全局变量中,以便稍后我可以触发相同的事件并将表排序到之前的用户排序操作。

但是当我手动触发之前存储的鼠标事件时,表格没有得到排序。

Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(_mouseEvent);

所以基本上这就是我希望它的工作方式。用户单击 JTable 列进行排序。 我将创建的 MouseEvent 存储在全局变量中。重新创建 JTable 后,我需要将其设置为之前的排序操作。
这就是为什么我需要重新触发存储的 MouseEvent 但它不起作用的原因。有什么想法吗?

【问题讨论】:

  • 当用户单击 TableHeader 进行排序时,您正在重新创建表格这一事实让我感到不舒服,这感觉像是代码异味/警告。

标签: java swing


【解决方案1】:

与鼠标事件无关。您必须存储行排序器的状态。看看RowSorter API。您可以使用getSortKeys()setSortKeys() 方法检索和恢复此状态。显然可以使用getRowSorter()method 从您的表中获取 RowSorter。

希望它有意义。

【讨论】:

  • 谢谢,有道理。我试试看。
【解决方案2】:

查看 DefaultRowSorter 的 sort() 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2013-07-18
    相关资源
    最近更新 更多