亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號