日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了JavaFX:右擊TableColumn禁用調整大小的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在OpenJFX 11.0.2&12.0.1 SDK(Windows 10,x64)中復制,不能在JavaFX 8中復制

右鍵單擊表列,然后嘗試調整該列的大小。未顯示調整大小光標,并且在再次手動單擊列之前無法調整該列的大小。

有什么解決辦法嗎?我需要對TableColumns使用contextMenu,因此無法使用使標題忽略鼠標右鍵單擊的潛在解決方法。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class Foo extends Application {


    @Override
    public void start(Stage stage) throws Exception {
        TableView<Object> testView = new TableView<>();
        testView.getColumns().addAll(new TableColumn<Object, Object>("C1"), new TableColumn<Object, Object>("C2"), new TableColumn<Object, Object>("C3"));

        stage.setScene(new Scene(testView));
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

推薦答案

好了,我發現了以下(非常非常臟)的解決方法。我以前從未嘗試過這樣做,因為我假設它會阻止顯示上下文菜單(正如我在最初的問題中所指出的),但顯然只需使用每個TableColumnHeader作品的鼠標事件,上下文菜單仍然可以正確顯示(也適用于沒有上下文菜單的TableColumns)。

不確定內部是否會出現任何問題,但由于默認情況下右擊似乎不起任何作用,我希望不會。

當然,lookupAll需要在呈現之后調用。

注意1:如果將TableMenuButtonVisible設置為True,則需要在每次將列設置為可見時執行此操作。

注2:越來越臟。簡單地在將列設置為可見之后再次調用它(請參見注釋1)并不總是足夠(也不是通過Platform.runLater調用)。我認為這是因為列標題在那時還沒有被呈現。您要么

需要等待Set<Node>填滿,即
必須是amountOfVisibleColumns + 1。如果它等于
對于可見列,它將不適用于新顯示的列。
或在lookupAll之前在TableView上調用layout()
或者,如果您有擴展TableView的類,則重寫layoutChildren并在可見列數發生變化時執行查找

注意3:您需要跟蹤舊的onMousePressed,如果按鈕不是SECONDARY,則執行它,否則列的重新排序將無法工作。

請讓我知道你是否能想到更干凈的方法。

import java.util.Set;

import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.skin.TableColumnHeader;
import javafx.scene.input.MouseButton;
import javafx.stage.Stage;

public class Foo extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        TableView<Object> testView = new TableView<>();
        testView.getColumns().addAll(createColumn("C1"), createColumn("C2"), createColumn("C3"));

        stage.setOnShown(ev -> {
            Set<Node> headers = testView.lookupAll("TableColumnHeader");
            for (Node header : headers) {
                if (header != null) {
                    ((TableColumnHeader) header).setOnMousePressed(e -> {
                        if (e.getButton() == MouseButton.SECONDARY) {
                            e.consume();
                        }
                    });
                }
            }
        });

        stage.setScene(new Scene(testView));
        stage.show();
    }

    private TableColumn<Object, Object> createColumn(String text) {
        MenuItem item = new MenuItem("Context");
        item.setOnAction(e -> {
            System.out.println("Action");
        });

        ContextMenu contextMenu = new ContextMenu();
        contextMenu.getItems().add(item);

        TableColumn<Object, Object> column = new TableColumn<>(text);
        column.setContextMenu(contextMenu);

        return column;
    }

    public static void main(String[] args) {
        launch(args);
    }
}

這篇關于JavaFX:右擊TableColumn禁用調整大小的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:JavaFX TableColumn 右擊 大小 禁用 調整
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定