JavaFX JAVAFX TreeItem mit Tooltip versehen

macaubas

Mitglied
Hallo Forum-Teilnehmer.
Ich möchte in einer TreeView alle TreeItems mit jeweils einem Tooltip versehen. Irgendwie muss das mit CellFactory gehen, aber ich habe alles erdenkliche schon ausprobiert. Ich lese die ganze TreeView/TreeItem aus einer Datenbank, das alles geht problemlos. Mein Beispiel ist somit nur für Testzwecke für mein Problem.
Ich benutze Netbeans11.2 und JAVA13.
Ich bin für jede Antwort dankbar.
 

Anhänge

  • SML_TSTController.JAVA.TXT
    5 KB · Aufrufe: 8
  • SML_TST.fxml.TXT
    894 Bytes · Aufrufe: 5

macaubas

Mitglied
Java:
package CADM;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.Tooltip;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.util.Callback;

public class SML_TSTController implements Initializable {

    @FXML
    private AnchorPane AP;
    @FXML
    private TreeView<DUO> TreeViewS;
    @FXML
    private Label Wert;
    public String SavWert = null;
    public TreeCell<DUO> TreeCellSav = null;

//----------------------------class DUO
    public class DUO {

        private String code;
        private String name;

        public DUO() {
        }

        public DUO(String code, String name) {
            this.code = code;
            this.name = name;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return this.name;
        }
    }
//----------------------------init

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        loadTreeItems_DUO("w1", "w2", "w3");
        int i = 0;
    }
//-------------------------loadTreeItems

    public void loadTreeItems_DUO(String... rootItems) {  //ist nur ein Test
        TreeItem<DUO> root = new TreeItem<DUO>(new DUO("DUOroot", "DUO"));
        TreeItem<DUO> A1 = new TreeItem<DUO>(new DUO("Zw", "Wid"));
        TreeItem<DUO> A2 = new TreeItem<DUO>(new DUO("Zc", "Cons"));
        TreeItem<DUO> A3 = new TreeItem<DUO>(new DUO("Zi", "IC"));
        root.setExpanded(true);
        root.getChildren().add(A1);
        root.getChildren().add(A2);
        A1.getChildren().add(A3);

//-- -- -- -- -- -- -- -- -- -- -- --- // Set Cell Factory.
        TreeViewS.setCellFactory(new Callback<TreeView<DUO>, TreeCell<DUO>>() {
            @Override
            public TreeCell<DUO> call(TreeView<DUO> p) {
                TreeCell<DUO> TST = new TextFieldTreeCellImpl();
                if (SavWert != null) {
                    if (TST.getTooltip() == null) {
                        Tooltip T = new Tooltip(SavWert);
                        TST.setTooltip(T);
                    }
                }
                int i = 0;
                return TST;
                //return new TextFieldTreeCellImpl();
            }
        });

        TreeViewS.setRoot(root);
        TreeViewS.setOnMouseClicked(Mevent);
    }
    
//----------------------Event-Handler       
    EventHandler<MouseEvent> Mevent = (MouseEvent evt) -> {
        if (((TreeView<String>) evt.getSource()).getSelectionModel().getSelectedItem() != null) {
            String EZG = ((TreeView<DUO>) evt.getSource()).getSelectionModel().getSelectedItem().getValue().getCode();
            Wert.setText(EZG);
            int i = 0;
        }
        int i = 0;
    };

//-------------------class TextFieldTreeCellImpl
    private final class TextFieldTreeCellImpl extends TreeCell<DUO> {

        private TextField textField;

        public TextFieldTreeCellImpl() {
        }

        @Override
        public void startEdit() {
            super.startEdit();
            if (textField == null) {
                //createTextField();
            }
            setText(null);
            setGraphic(textField);
            textField.selectAll();
        }

        /*        @Override
        public void cancelEdit() {
            super.cancelEdit();
            setText((DUO) getItem().getName());
            setGraphic(getTreeItem().getGraphic());
        }*/
        @Override
        public void updateItem(DUO item, boolean empty) {
            super.updateItem(item, empty);
            if (empty) {
                setText(null);
                setGraphic(null);
                //SavWert = null;
            } else {
                if (isEditing()) {
                    if (textField != null) {
                        textField.setText(getString());
                    }
                    setText(null);
                    setGraphic(textField);
                } else {
                    setText(item.getName() + "_b");
                    SavWert = item.getCode();
                    System.out.println(item.getCode() + "," + item.getName());
                    setGraphic(getTreeItem().getGraphic());
                    int i = 0;
                }
            }
        }
        private String getString() {
            return getItem() == null ? "" : getItem().toString();
        }
    }
}
 

macaubas

Mitglied
Ich habe nun soeben noch meinen JAVA-Code und hier meinen fxml-Code geladen.
XML:
<AnchorPane fx:id="AP" maxHeight="700.0" maxWidth="700.0" minHeight="0.0" minWidth="0.0" prefHeight="700.0" prefWidth="700.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="CADM.SML_TSTController">
    <children>
        <Label fx:id="Wert" layoutX="49.0" layoutY="233.0" prefHeight="53.0" prefWidth="284.0" text="Label" textFill="RED">
         <font>
            <Font size="36.0" />
         </font></Label>
      <TreeView fx:id="TreeViewS" layoutX="156.0" layoutY="59.0" prefHeight="160.0" prefWidth="179.0" />
    </children>
</AnchorPane>
 

looparda

Top Contributor
In updateItem kannst du den Inhalt des Tooltips aktuell halten. Ich weiß nicht, ob es schöner geht, aber es funktioniert.

Java:
...
TreeViewS.setCellFactory(v -> new TextFieldTreeCellImpl());
...
private final class TextFieldTreeCellImpl extends TreeCell<DUO> {

   ...

    public TextFieldTreeCellImpl() {
        setTooltip(getTooltip() == null ? new Tooltip() : getTooltip());
    }

    ...

    @Override
    public void updateItem(DUO item, boolean empty) {
        super.updateItem(item, empty);
        ...
        getTooltip().setText(getText());
    }

    ...
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin StringGrid in SceneBuilder und javaFX AWT, Swing, JavaFX & SWT 2
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
MiMa SwingFXUtils in JavaFX 20 AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenstertitel zu klein. AWT, Swing, JavaFX & SWT 1
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
Hatsi09 Javafx Neuladen von ImageView und MediaView AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Umlaute in JavaFX GUI AWT, Swing, JavaFX & SWT 12
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
melaniemueller Taschenrechner JavaFX AWT, Swing, JavaFX & SWT 4
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
thor_norsk JavaFX - Grafikkarte AWT, Swing, JavaFX & SWT 7
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
H JavaFX Fehlende JavaFX Package AWT, Swing, JavaFX & SWT 10
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
S JavaFX: voneinander abhängige TextFields AWT, Swing, JavaFX & SWT 33
M Gluon will JavaFX in den Browser stecken AWT, Swing, JavaFX & SWT 0
H javafx application does not exist AWT, Swing, JavaFX & SWT 16
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
izoards JavaFX TextFlow - Sonderzeichen AWT, Swing, JavaFX & SWT 1
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
MiHimbert javaFX openfx (17) datepicker AWT, Swing, JavaFX & SWT 3
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
M Zufallsgenerator bei JavaFx AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
L JavaFX JavaFX, MVVM und SceneBuilder AWT, Swing, JavaFX & SWT 4
S JavaFx Album AWT, Swing, JavaFX & SWT 137
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX/ Taskmenu / UML Klassendiagramm AWT, Swing, JavaFX & SWT 2
Davee JavaFX JavaFX Jar ausführbar jedoch nicht alle Stages AWT, Swing, JavaFX & SWT 3
2 JavaFX die ChoiceBox leitet den String nicht weiter oder es komm zu einem NullPointer AWT, Swing, JavaFX & SWT 8
C MouseEvent JavaFX AWT, Swing, JavaFX & SWT 4
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
M4cM4rco0707 JavaFX Custom-Komponente mit Custom-Controller AWT, Swing, JavaFX & SWT 3
M Error occurred during initialization of boot layer java.lang.module.FindException: Module javafx.controls not found AWT, Swing, JavaFX & SWT 14
G javafx build.fxbuild in eclipse und ANT AWT, Swing, JavaFX & SWT 9
M Kollisionensbehandlung mit JavaFX AWT, Swing, JavaFX & SWT 1
N JavaFX - Toolkit not initialized AWT, Swing, JavaFX & SWT 6
G JavaFX , Duplicate erzeugt aber ich weis nicht wo AWT, Swing, JavaFX & SWT 4
K Javafx Plugin (javafx:jlink) mit moditect Plugin nutzen ... AWT, Swing, JavaFX & SWT 5
J Saubere Trennung Model, View, Controller Javafx AWT, Swing, JavaFX & SWT 10
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
Z JavaFX JavaFX Spinner AWT, Swing, JavaFX & SWT 1
N JavaFX Tableview nach Löschen von Element falscher Index AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
T JavaFX DatePicker JavaFX AWT, Swing, JavaFX & SWT 14

Ähnliche Java Themen

Neue Themen


Oben