Machen Sie JavaFX / TableView bearbeitbar

Umgebung

Überblick

Die grundlegende Verwendung der Tabellenansicht besteht darin, Zeilen benutzerdefinierten Klassen (Datenmodellen) zuzuordnen. Die Erklärung hier ist leicht zu verstehen, wenn man sich auf das Folgende bezieht.

AOE-Tagebuch: Anpassen von ListView- und TableView-Zellen ORACLE: JavaFX UI Component Operations 13 Tabellenansicht

In diesem Eintrag werden wir den Mechanismus und die Variationen untersuchen, die die auf diese Weise erstellte Tabellenansicht bearbeitbar machen.

Beispielcode

Controller.java Entity.java Main.fxml

0.png

Text bearbeitbare Zelle

Sie können "TextFieldTableCell" verwenden, um einen Zellentext bearbeitbar zu machen.

1.png

Wenn Sie "TextFieldTableCell" verwenden, ändern Sie "CellFactory" von "TableColumn" von der Standardeinstellung. Beachten Sie, dass ** nur bearbeitet werden kann, wenn sowohl die bearbeitbaren Eigenschaften TableView als auch TableColumn auf true ** gesetzt sind. (Es kann auch in Scene Builder bearbeitet werden.)

Controller.java


tableView.setEditable(true);
column1.setEditable(true);
column1.setCellFactory(TextFieldTableCell.forTableColumn());

TextFieldTableCell hat einen Mechanismus, um die angezeigte Komponente im Bearbeitungsstatus durch ** EIN / AUS ** auf TextField umzuschalten.

StringConverter StringConverter bietet einen Mechanismus zum Konvertieren von Zeichenfolgen in andere Klassen.

Dieser StringConverter ist erforderlich, wenn der Eigenschaftstyp nicht String ist. StringConverter verfügt über viele Implementierungen für jeden zu konvertierenden Typ, sodass Sie aus diesen auswählen können. Paket javafx.util.converter

//Beim Bearbeiten von Spalten vom Typ Boolean als Text
column3.setCellFactory(TextFieldTableCell.forTableColumn(new BooleanStringConverter()));

Auswählbare bearbeitbare Zellen

Sie können "ChoiceBoxTableCell", "ComboBoxTableCell" verwenden, um eine Zelle auswählbar und bearbeitbar zu machen. ChoiceBox bietet keine Bildlauffunktion für Auswahlmöglichkeiten, daher ist es nicht geeignet, wenn es viele Auswahlmöglichkeiten gibt.

ChoiceBox 3_.png

ComboBox 4.png

Controller.java


// ChoiceBox
column2.setCellFactory(ChoiceBoxTableCell.forTableColumn("Item1", "Item2", "Item3"));
// ComboBox
column2.setCellFactory(ComboBoxTableCell.forTableColumn("Item1", "Item2", "Item3"));

In ähnlicher Weise verfügen diese auch über einen Mechanismus zum Umschalten der angezeigten Komponente auf "ChoiceBox", "ComboBox", indem sie im Bearbeitungsstatus ein- und ausgeschaltet werden.

Bearbeitbare Zelle umschalten

Sie können das Umschalten von Zellen mit "CheckBoxTableCell" bearbeitbar machen. Diese Zelle hat keinen Bearbeitungsstatus und Sie können ihren Wert mit einem einzigen Klick ändern.

5.png

Controller.java


column3.setCellFactory(CheckBoxTableCell.forTableColumn(column3));

Bearbeitbare benutzerdefinierte Zelle

Erstellen wir eine benutzerdefinierte Zelle, in der beim Bearbeiten der JavaFX-Standard "ColorPicker" angezeigt wird. Wenn nicht bearbeitet, wird das leere Fenster ausgefüllt.

6.png

ColorPickerTableCell.java

column4.setCellFactory(ColorPickerTableCell.forTableColumn());

Das grobe Übergangsbild ist wie folgt. Wenn Sie das Timing verstehen können, wenn das Anzeigesteuerelement durch "setGraphic" umgeschaltet wird und der Mechanismus, der "commitEdit" in "OnAction" des Farbwählers aufgerufen wird, kann er meiner Meinung nach auf andere Steuerelemente angewendet werden.

edit2.png

Benutzerdefinierte Zelle, die den Bearbeitungsstatus nicht verwendet

Ich werde auch versuchen, den Farbwähler anzuzeigen, indem ich das Steuerelement direkt platziere, ohne den Bearbeitungsstatus zu verwenden. Ich denke, dieses Muster wird im Allgemeinen als benutzerdefinierte Zelle implementiert. Es ähnelt dem obigen Kontrollkästchen.

7.png

DirectColorPickerTableCell.java

column4.setCellFactory(DirectColorPickerTableCell.forTableColumn());

Da der Bearbeitungsstatus nicht verwendet wird, wird der Wert des Datenmodells direkt vom Farbwähler "OnAction" umgeschrieben.

Es ist gut, weil der Mechanismus einfach ist und der Benutzer leicht erkennen kann, dass er bearbeitet werden kann. Es sollte jedoch beachtet werden, dass die auf dem Bildschirm angeordneten schweren Steuerelemente die Last erhöhen.

Eingebaute Zellenliste

Zu Beginn werden verschiedene Arten von integrierten Zellen eingeführt, z. B. für Bäume und Listen sowie für Tabellen. Es ist eine gute Idee, dies zu überprüfen, bevor Sie eine benutzerdefinierte Zelle erstellen. Paket javafx.scene.control.cell

Referenz

[Light Lab: JavaFX-Zelle anpassen](http://krr.blog.shinobi.jp/javafx/javafx%20%E3%82%BB%E3%83%AB%E3%81%AE%E3%82% AB% E3% 82% B9% E3% 82% BF% E3% 83% 9E% E3% 82% A4% E3% 82% BA) Quelle: GitHub FXML: GitHub

Recommended Posts

Machen Sie JavaFX / TableView bearbeitbar