Я понимаю, что есть другие посты по этому поводу, но это не дубликат.
Если я использую следующий код, чтобы скрыть горизонтальную полосу прокрутки от TableView, все еще есть область 1 или 2 пикселя внижняя часть таблицы, из которой пользователь может прокручивать TableView по горизонтали - с помощью колеса мыши (SHIFT + колесо мыши также работает из любой точки области таблицы).
.table-view *.scroll-bar:horizontal *.increment-button,
.table-view *.scroll-bar:horizontal *.decrement-button {
-fx-background-color: null;
-fx-background-radius: 0;
-fx-background-insets: 0;
-fx-padding: 0;
}
.table-view *.scroll-bar:horizontal *.increment-arrow,
.table-view *.scroll-bar:horizontal *.decrement-arrow {
-fx-background-color: null;
-fx-background-radius: 0;
-fx-background-insets: 0;
-fx-padding: 0;
-fx-shape: null;
}
Я попытался найти отражениевзламывает доступ к полосе прокрутки и пытается отключить ее таким образом, но безуспешно.У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ - вот минимальный пример, для меня это всегда воспроизводимо на Win 10, JavaFX 12.0.1.
Test.java:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
/**
* Horizontal scrolling via mouse wheel is possible when you place the cursor at the bottom of the window, just above the resize-area.
*/
public class Test extends Application {
@Override
public void start(Stage primaryStage) {
TableView<String> table = new TableView<>();
table.getColumns().add(new TableColumn<>("first"));
table.getColumns().add(new TableColumn<>("second"));
table.getColumns().add(new TableColumn<>("third"));
table.getColumns().add(new TableColumn<>("fourth"));
table.getColumns().add(new TableColumn<>("fifth"));
table.getColumns().add(new TableColumn<>("sixth"));
table.getColumns().add(new TableColumn<>("seventh"));
table.getColumns().add(new TableColumn<>("eighth"));
table.getColumns().add(new TableColumn<>("ninth"));
table.getColumns().add(new TableColumn<>("tenth"));
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
// table.addEventFilter(ScrollEvent.ANY, Event::consume);
ObservableList<String> data = FXCollections.observableArrayList();
for (int i = 0; i < 5000; i++) {
data.add("foobar");
}
table.setItems(data);
StackPane root = new StackPane();
root.getChildren().add(table);
Scene scene = new Scene(root, 300, 250);
scene.getStylesheets().add("test.css");
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(Test.class);
}
}
Test.CSS:
.table-view .scroll-bar * {
-fx-min-width: 0;
-fx-pref-width: 0;
-fx-max-width: 0;
-fx-min-height: 0;
-fx-pref-height: 0;
-fx-max-height: 0;
}