【问题标题】:remove focus from JTable first row从 JTable 第一行移除焦点
【发布时间】:2010-11-16 13:25:12
【问题描述】:

我有 JTable 和其中的行。默认情况下,第一行被选中,焦点在其中。如何取消选择第一行并将焦点更改到.addListener(new RowSetListener() 也可以在第一行工作的其他位置。

我已经试过了:

tableZaposlenciView1.setRowSelectionAllowed(true);        
//tableZaposlenciView1.getSelectionModel().clearSelection();
//tableZaposlenciView1.setColumnSelectionInterval(0,0);
//tableZaposlenciView1.setRowSelectionInterval(false,false);        
tableZaposlenciView1.changeSelection(0,0,false,false);
tableZaposlenciView1.requestFocus();

但它不起作用。

【问题讨论】:

  • 好吧,如果您想更改为 (0,0) 以外的其他值,也许您不应该使用 (0,0) 作为 changeSelection() 的参数,对吗?
  • 我可以尝试 12、2 但都是一样的
  • changeSelection(...) 对我来说非常好用。发布您的 SSCCE (sscce.org) 以展示该问题。我们无法一直猜测您可能在做什么,也可能不做什么。

标签: java swing focus jtable


【解决方案1】:

看看 JTable 的 changeSelection() 方法。我相信它可以满足您的需求。

编辑:如果你想清除选择:

JTable table = ...;
table.getSelectionModel().clearSelection();

【讨论】:

  • 我试试 tableZaposlenciView1.getSelectionModel().clearSelection();
  • 以及 tableZaposlenciView1.requestFocus() 但始终选择第一行并且第一行上的侦听器不起作用。我没有更多的想法......
  • 我还尝试将焦点添加到其他一些组件上,例如 boolean check = panelTabi.requestFocusInWindow();但检查总是错误的
  • +1 使用clearSelection()ListSelectionDemodownload.oracle.com/javase/tutorial/uiswing/examples/events/… 中有效
【解决方案2】:

如果其他人对 ADF 和 JTable 有类似的问题,这里是解决方案。我通过覆盖 VO impl 上的 first() 来实现这一点。我的问题可以解决了。

这在很多情况下都派上用场:

  • 刷新后无选择(仅从 first() 返回 null)
  • 刷新后重新选择特定行(刷新前,存储一个行键,在 first() 中刷新后,如果找到存储的键,导航到该行并从 first() 返回)
  • 在刷新工作列表后查找下一个匹配行供用户处理
  • 避免在 VL 情况下代价高昂的细节执行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 2023-03-18
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多