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.
Controller.java Entity.java Main.fxml
Sie können "TextFieldTableCell" verwenden, um einen Zellentext bearbeitbar zu machen.
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()));
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
ComboBox
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.
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.
Controller.java
column3.setCellFactory(CheckBoxTableCell.forTableColumn(column3));
Erstellen wir eine benutzerdefinierte Zelle, in der beim Bearbeiten der JavaFX-Standard "ColorPicker" angezeigt wird. Wenn nicht bearbeitet, wird das leere Fenster ausgefüllt.
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.
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.
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.
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
[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