为了账号安全,请及时绑定邮箱和手机立即绑定

javafx:双击空白行打开先前选择的对象

javafx:双击空白行打开先前选择的对象

慕容708150 2021-08-25 15:12:17
给定一个 TableView,我需要检测双击才能打开相关对象的新窗口。但是,如果我选择一个对象,然后单击 tableview 的空白区域,它将打开我之前选择的对象。我一直在环顾四周,每个人都为 tableview 定义了一个对象行,当该行为空 ( row.isEmpty()) 时,他们解决了问题。所以,我的问题是:我可以在不指定 TableView 的行的情况下做同样的事情吗?这是我的桌子的控制器:我是意大利人,所以有些东西是用意大利语写的(比如对象和变量名称)我用以下注释突出显示了对创建表很重要的部分:/****部分表视图****/
查看完整描述

1 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

在一个空行的原因双击使你打开最后选定的产品,因为你加入EventHandler到TableView。当您单击 上的任意位置TableView(包括空行)时,将EventHandler调用 。您想要的是每行EventHandler检查该行是否为空。此外,由于每个TableRow都有对其项目的引用,因此您不必使用TableView的选择模型。下面是一个例子:


import javafx.event.EventHandler;

import javafx.fxml.FXML;

import javafx.scene.control.TableRow;

import javafx.scene.control.TableView;

import javafx.scene.input.MouseButton;

import javafx.scene.input.MouseEvent;


public class Controller {


  @FXML

  private TableView<Object> table; // Using <Object> for example


  @FXML

  private void initialize() {

    EventHandler<MouseEvent> onClick = this::handleTableRowMouseClick;

    table.setRowFactory(param -> {

      TableRow<Object> row = new TableRow<>();

      row.setOnMouseClicked(onClick);

      return row;

    });

  }


  private void handleTableRowMouseClick(MouseEvent event) {

    if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {


      // We know it will be a TableRow<Object> since that is the only kind

      // of object we added the EventHandler to.

      @SuppressWarnings("unchecked")

      TableRow<Object> row = (TableRow<Object>) event.getSource();


      if (!row.isEmpty() && row.getItem() != null) {

        displayItem(row.getItem());

        event.consume();

      }

    }

  }


  private void displayItem(Object item) {

    // This is where you'd put your code that opens the item in

    // its own Stage.

  }


}

在示例中,EventHandler与TableRow由rowFactory. 这是可以的,因为我们可以TableRow通过调用MouseEvent.getSource(). 我将事情分成更多的方法,以使代码更具可读性/可维护性。


该示例检查鼠标按钮是否为主按钮。如果您不关心哪个按钮被点击了两次,那么您可以简单地删除该检查。


查看完整回答
反对 回复 2021-08-25
  • 1 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信