JavaFx:获取最后一个焦点表

时间:2017-07-17 06:49:04

标签: java javafx focus tableview javafx-8

我有两个TableView的视图,我想获取最后一个选中的表,所以上次选择了表格的行。我试过了:

  • table.isFocused()但是对于两个表都返回false,我猜是因为我选择了一行而不是表本身。

  • table.getFocusModel().getFocusedItem() != null,但如果我在两个表中选择一行,则对两个表都返回true。

那么我怎么能得到最后一个选中的表格行,我有一个肮脏的解决方案,定义一个枚举并为tableView的选择模型添加一个监听器,但我认为有一种更简单的方法,你有什么想法吗?对我来说,最好的方法是为一个tableview返回true,为另一个返回false,当然对于最后选择的方式为true。

1 个答案:

答案 0 :(得分:0)

我看到了下一个解决方案:你有一个临时变量,它将指向最后一个选定的节点,你会收听2个表视图以获得聚焦属性:

   QSignalSpy spy(&foo, SIGNAL(ready()));
   connect(&foo, SIGNAL(ready()), &bar, SLOT(work()), Qt::QueuedConnection);
   foo.emitReady();
   QCOMPARE(spy.count(), 1);        // QSignalSpy uses Qt::DirectConnection
   QCOMPARE(bar.received, false);   // bar did not receive the signal, but that is normal: there is no active event loop
   qApp->processEvents();           // Manually trigger event processing ...
   QCOMPARE(bar.received, true);    // bar receives the signal only if QTEST_MAIN() is used

在' lastSelectedTable'之下的任何时间你有一个真正最新的焦点表的参考。

相关问题