JavaFX Label lässt sich innerhalb service Task nicht updaten?

ralfb1105

Bekanntes Mitglied
Hallo zusammen,
ich habe ein etwas merkwürdiges Problem und vermute mal das ich irgendetwas übersehe .. komme aber einfach nicht auf die Lösung. Hier mein Problem:

Ich starte aus meinem Main GUI ein weiteres Fenster. Hier gibt es einen mehrere Infos und einen Start Button der Zeilen in eine Test Datenbank Tabelle kopiert. Dieses wird innerhalb eines Service Task realisiert um das GUI nicht zu blockieren. Nachdem alle Zeilen erfolgreich in die Tabelle kopiert worden sind frage ich Bytes und Blocks der Tabelle ab und möchte diese Werte gerne in zwei Label des GUI Fenster speichern. Hört sich ja recht simpel an - habe ich mir auch gedacht, aber wieder mal verzweifel ich daran. Ich kann die Label außerhalb des service Task, z.B. in der Initialize() Methode mit belieben Werten setzen, innerhalb des service Task geht das, warum auch immer nicht?? Wenn ich aus dem Label ein Text Node mache funktiiniert das auch innerhalb des Service Task.
Hier mal die zuständigen Code Schnipsel:
Java:
@FXML
Label actualBytes;
   
@FXML
Label actualBlocks;

Hier der relevante Teil aus dem service Task:

Java:
@SuppressWarnings("rawtypes")
    Service insertUSFLIGHTS1990_2009Task = new Service() {
        String dbUserPassword;
        String time2Insert;
        String countRowsUSFLIGHTS;
        boolean userDeclinedReCreateTable = false;

        @Override
        protected Task createTask() {
            return new Task() {
                @Override
                protected Void call() throws Exception {
...
...
updateMessage("Task 4: Get actual Bytes & Blocks from table " + tableName + ". Please wait ...");
                    LOGGER.info("Task 4: Get actual Bytes & Blocks from table " + tableName + ". Please wait ...");
                   
                    String queryGetBytesBlocksUSFLIGHTS = "select bytes,blocks from user_segments where segment_name = '" + tableName + "'";
                    Statement stmtGetBytesBlocksUSFLIGHTS = conn.createStatement();
                   
                    try {
                        //updateProgress(-1.0, 1.0);
                        ResultSet rsetGetBytesBlocksUSFLIGHTS = stmtGetBytesBlocksUSFLIGHTS.executeQuery(queryGetBytesBlocksUSFLIGHTS);
                        while (rsetGetBytesBlocksUSFLIGHTS.next()) {
                            actualBytes.setText(rsetGetBytesBlocksUSFLIGHTS.getString("BYTES"));
                            actualBlocks.setText(rsetGetBytesBlocksUSFLIGHTS.getString("BLOCKS"));
...

Wenn ich die FXML Nodes von Label auf Text ändere funktiiniert es. Bei Label wird keine Exception geworfen, es wird aber auch kein Text gesetzt?

Hat jemand eine Erklörung für das Verhalten?
Was mache ich hier falsch?

Gruß
Ralf
 

mihe7

Top Contributor
Da ich mich mit JavaFX nicht wirklich auskenne, nur eine Vermutung: es liegt daran, dass Du die Labels nicht im UI-Thread aktualisierst. Pack die beiden "setText-Zeilen" mal in ein Platform.runLater(...)
 

dzim

Top Contributor
@mihe7 richtig geraten.

Einfache Lösung: Um den Block (also im while) ein Platform.runLater(() -> { /* code here */ }); und fertig.

Dann jedoch kommen meine Fragen: Mit wievielen Ergebnissen rechnest du, dass es einen while rechtfertigt? Wenn es mehrere sind, überschreibst du die Labels ja immer... Ist das sinnvoll?
if genügt, wenn du weisst, dass es nur eins ist, ansonsten nur den letzten Eintrag holen (z.B. primitiv order by whatever desc limit 1;)

Dann ist es unsauber, dass dein Service das UI kennen muss, bzw. eine Referenz darauf hat, indem die Labels reingereicht werden. In JavaFX gibt es Properties (hier z.B. StringProperty), dass man hier updaten könnte. Dein UI registriert sich dann auf das Property und hört auf seine Änderungen (myStringProperty.addListener((observable, oldValue, newValue) -> { /* update UI here */});). Das ist deutlich sauberer und trennt, was nicht zusammengehört.
 

ralfb1105

Bekanntes Mitglied
Hallo Daniel, Hallo mihe7,

Danke für die Erklärung - mein erster schneller Test zeigt das es mit Platform.runlater funktioniert.

Nun zu Deinen sehr guten Anmerkungen die ich natürlich gerne versuche umzusetzen :)
1. Du hast Recht mit der while Schleife, es kann hier nur ein Ergebnis geben, es ist auf die schnelle durch pick-put entstanden :rolleyes: muss ich ändern - Danke für den Hinweis!
2. Hier ist es leider für mich nicht ganz so einfach da ich hier sehr wahrscheinlich noch viele Leichen im Keller habe :(
Der Code ist aus meinem Controller für das Window um die Tabelle mit Zeilen zu füllen. Dieser Controller enthält den Service Task und ich vermute allein das ist schon nicht richtig - oder? Ich schätze ich müsste den service Task in eine eigene Klasse (Model?) auslagern und dann alle Veränderungen im GUI über die von Dir beschriebenen properties ändern - richtig?

Ich befürchte meine Trennung in Bezug auf MVC ist noch nicht wirklich vollkommen.

Gruß

Ralf
 

dzim

Top Contributor
Ja genau. Trennung von UI und deren spezieller Logik, dem "Backend" das irgendwelche Aufgaben macht und zu guter Letzt noch dem Model. MVC, MVVN, es gibt da mehrere "richtige" Ansätze. Das Wichtige ist einfach, dass du erst mal GUI-spezifischen Code von solchen Dingen wie DB u.s.w. trennst. Alles weitere kommt dann schon noch. Ich hab's auch nicht auf Anhieb richtig gemacht und meinen Weg pflastern viele Code-Leichen... Dinge, die ich heute anders machen würde, etc.
Kommt alles schon noch, wenn du dran bleibst, dich damit beschäftigst und wirklich willst.

BTW: die ganze Trennung ist natürlich agnostisch vom Framework und der Sprache. Egal womit du Oberflächen machst, du musst die Dinge auftrennen, speziell auch deswegen, damit du später deinen Code auch noch verstehen kannst...
 

ralfb1105

Bekanntes Mitglied
Hallo,

erst einmal hier der Code aus meiner initialen Frage mit den Änderungen bzgl. if und Plaform.runlater - nur um den Thread vollständig zu haben ;)
Java:
try {
                        ResultSet rsetGetBytesBlocksUSFLIGHTS = stmtGetBytesBlocksUSFLIGHTS.executeQuery(queryGetBytesBlocksUSFLIGHTS);
                        if (rsetGetBytesBlocksUSFLIGHTS.next()) {
                            Platform.runLater(() -> {
                                try {
                                    actualBytes.setText(rsetGetBytesBlocksUSFLIGHTS.getString("BYTES"));
                                    actualBlocks.setText(rsetGetBytesBlocksUSFLIGHTS.getString("BLOCKS"));
                                } catch (SQLException ex) {
                                    String msg = String.valueOf(ex);
                                    messageTextArea.appendText(msg + "\n");
                                    LOGGER.severe(msg);
                                    updateMessage("Task 4: Get actual Bytes & Blocks from table " + tableName +": Failed!");
                                    LOGGER.severe("Task 4: Get actual Bytes & Blocks from table " + tableName +": Failed!");
                                    setFadeTransitionLabelErrorStatus(true);
                                    setFadeTransitionStart(true);
                                    insertUSFLIGHTS1990_2009Task.cancel();
                                }
                               
                            });
                        }
                       
                        updateMessage("Task 4: Get actual Bytes & Blocks from table " + tableName +": Success.");
                        LOGGER.severe("Task 4: Get actual Bytes & Blocks from table " + tableName +": Success.");
                       
                    }

Ich würde dann gerne noch versuchen die Anmerkung von Daniel bzgl. der Trennung und dem Listener auf das Property an Hand dieses Labels zu probieren, würde dazu aber einen einen weiteren Post in diesem Thread schreiben, sonst wird dieser zu lang.

Gruß
Ralf
 

ralfb1105

Bekanntes Mitglied
Hallo Daniel,
In JavaFX gibt es Properties (hier z.B. StringProperty), dass man hier updaten könnte. Dein UI registriert sich dann auf das Property und hört auf seine Änderungen (myStringProperty.addListener((observable, oldValue, newValue) -> { /* update UI here */});).

Ich möchte versuchen das schrittweise zu verstehen und würde dann versuchen das "Label Thema", sprich die Labels die mit den aktuellen Werten von Bytes und Blocks aus der DB Abfrage gesetzt werden, gemäß Deinem Vorschlag umzusetzen. Damit ist der Keller weiterhin voller Leichen, aber ein paar Knöchelchen hätte ich dann schon mal rausgezerrt :p

Ich habe ja ein Model in meiner Applikation. Ich würde mir dann folgendes theoretisch vorstellen:
1. Im Model erstelle ich ein StringProperty "actualBytesProperty".
2. Ich erstelle getter und setter für dieses Property
3. Im Model erstelle ich eine Methode welche folgende Parameter übergeben bekommt:
- Connection conn (Database Connection)
- String query
- Statement stmt
Die Methode ermittelt aus der DB Tabelle die aktuellen Werte für Bytes und Blocks.
Die Methode macht einen Update auf StringProperty "actualBytesProperty".
4. Im Controller registriere ich einen Listener auf das Model StringProperty "actualBytesProperty" und bei Änderungen wird das Label "actualBytes" mit den Werten aktualisiert.

Eine Sache ist mir hier nicht klar ... Ich mache diese ganzen Aktitäten ja bisher in einem service Task im Controller. Funktiiniert - ist aber nicht wirklich schön.

Ich würde jetzt Punkt 4. von oben, sprich den Listener auf das StringProperty z.B. in der initialize() Methode machen - wäre das richtig?
Müsste ich dann den Aufruf der Methode des Model zum ermitteln der Bytes/Blocks (Punkt 3) im service Task des Controller in ein Platform.runlater packen damit das UI "wartet"?

Ich hoffe ich habe das einigermaßen verständlich ausgedrückt :rolleyes:

Gruß
Ralf
 

dzim

Top Contributor
Bin heute etwas zu Knülle, um es mir alles genau anzuschauen. Ich versuch mal morgen drauf zu Antworten - falls mir nicht schon jemand zuvor kommt... OK?
 

dzim

Top Contributor
Bezüglich JavaFX-Properties hier mal ein Tutorial von Oracle selbst (etwas veraltet, aber im Kern noch gültig):
https://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm

Hier auf code.makery gibt es auch ein etwas konkreteres Beispiel.

Um etwas genauer zu werden: Du solltest im Model ebenfalls keine DB-spezifischen Sachen hinterlegen. Dafür kann man "Services" (im abstrakteren Sinne), also Objekte, die Datenzugriffsmethoden (DAO -> Data Access Object). Das Modell macht keine Business-Logik sondern enthält nur Daten!

Modell, DAO, sonstige Services - all dass solltest du nur auf irgendeine Art dem GUI-Controller übergeben. Dazu gibt es hier im Forum schon einige Themen. Die sogenannte Controller Factory ist hier ein Stichwort, wenn du mit FXMLs arbeitest. Am Ende genügt es, diese Sachen z.B. in der Application-Klasse anzulegen und dann per Setter an deine GUI-Klassen weiterzureichen.

Deine Annahme zum Anhängen des Listeners ist korrekt. Bedenke nur, dass du eventuell die Listener beim Zerstören des UIs (speziell, wenn du bestimmte Bereiche immer wieder neu generierst) am Ende auch wieder entfernen müsstest, damit nicht Events an längst nicht mehr existente UIs weitergesendet werden könnten. So schafft man sich sonst später nur andere Probleme.

PS: Ja, war verständlich genug ausgedrückt.
 

ralfb1105

Bekanntes Mitglied
Hallo Daniel,

Danke erstmal für Deine Hinweise und Referenzen - habe ich mir jetzt noch nicht im Detail angeschaut aber schon sehr wichtig zu wissen wo man mal an Hand von Beispielen "spicken" kann ;)

Ich habe noch eine konkrete Frage zu meiner theoretischen Betrachtung - sprich den Punkten 1-4.
Fragen:
1.) Wäre das denn so grob der richtige Fahrplan, mal unabhängig davon das mein Model noch zu viel Backend (DOA) Code enthält?
2.) Müsste ich dann den Aufruf der Methode des Model zum ermitteln der Bytes/Blocks (Punkt 3) im service Task des Controller in ein Platform.runlater packen damit das UI "wartet"?

Gruß

Ralf
 

dzim

Top Contributor
1) Grob, ja. Aber ich empfehle dir halt, dir möglichst keine "schlechten Angewohnheiten" zu merken. Das Prinzip des MVC oder MVVM sagt ja eben im Kern und vereinfacht aus, dass du GUI, Model und Programmlogik voneinander trennen sollst.

2) Im Task würde ich kein Platform#runLater verwenden - der Task updated nur das ihm bekannte Model, was der Rest daraus macht, ist dem Listener überlassen. Also müsste im Listener dann entsprechend ein Platform#runLater verwendet werden, denn dieser wird von einem anderen Thread aus aufgerufen und das mag dein UI gar nicht (gibt es entsprechende Exceptions). Und das UI wartet nicht (das wäre ja böse!) sondern es "hört" nur auf Änderungen und reagiert entsprechend.
 

ralfb1105

Bekanntes Mitglied
Hallo Daniel,

überzeugt - ich habe mich dazu entschlossen an meiner Applikation, die im Grunde genommen jetzt das kann was ich mir vorgenommen hatte, nichts mehr zu ändern, bevor ich es dann doch nur wieder halbherzig machen würde/könnte um nicht alles ändern zu müssen, worauf es aber vermutlich hinauslaufen würde.

Auch auf die Gefahr hin jetzt ein "großes Fass auf zu machen" muss ich jetzt noch einmal die Frage nach dem MVC stellen, denn wenn ich Deinen Kommentar richtig lese glaube ich das ich das immer noch nicht richtig verinnerlicht habe.

Ich habe mal irgendwo folgendes gelesen oder gehört:
(1) View: Ist quasi das .fxml File welches ich mittels SceneBuilder erstelle und was dann die FXML Nodes in der Scene auf der Stage verteilt/anordnet. Ich meine mal den Vergelich mit dem "Gast im Restaurant" gehört zu haben.

(2) Controller: Im Restaurant Vergleich der "Kellner" der die Bestellung vom Gast, sprich vom GUI, aufnimmt und damit dann zum (3) "Koch" (Model) geht. Dieser nimmt die Bestellung (Daten) entgegen und mit "Werkzeug und Zutaten" (Backend) daraus etwas "brutzelt". Wenn es fertig ist übergibt er es dem "Kellner" (Controller) der es dann dem Gast (GUI) darbietet.

Ich vermute auf Grund Deiner Kommentar das dies nicht so 100% den Kern von MVC trifft - richtig?

Ich würde es gerne von einem fachmann an Hand eines kleinen abstrakten Beispiels verstehen, daher versuche ich mal folgendes zu skizzieren:

1. Ich habe ein Main Window in dem der User die Zugangsdaten für die Datenbank Verbindung eingeben kann.
2. Beim click auf den "Start" Button wird ein weiteres Fenster gestartet. Hier kann der User die Anzahl Rows die in die DB geladen werden sollen bestimmen. Beim Click auf den Start Button werden die Rows (inserts z.B. gelesen aus einem File) in die DB geschrieben. Der Fortschritt wird in einem ProgressIndicator angezeigt - Update pro geschriebener Zeile. Fehlermeldungen und Status Infos werden in einer TextArea angezeigt.

Für mich stellt sich nun die Frage was ich gemäß MVC wo hinein implementiere - grob natürlich ;)

1. Erstellen von zwei FXML Dateien mit Hilfe des SceneBuilder die mir die beiden Fenster mit den Nodes wie. z.B. die Text Felder zur Eingabe der Verbindungsdaten, den Start Button, den Progress Indicator usw. darstellen/anordnen.
--> Das ist das View

2. Erstellen von zwei Controller Classes welche ich jeweils im SceneBuilder mit den beiden FXMl Dateien verknüpfe.
--> Das sind natürlich die Controller.
Frage:
Welcher Code gehört denn genau hier rein?
- Die FXML Nodes
- Die initialize Methode
- Die Methoden die ausgeführt werden wenn ein Button gedrückt wird
Bezogen auf mein o.g. Beispiel würde beim drücken des Start Button zum füllen der DB ein service Task ausgeführt. Welcher Code steuert dann hier den Ablauf, oder besser ausgedrückt, wie würde ich denn jetzt aus dem Service Task das befüllen der DB Tabelle bewerkstelligen oder besser gesagt aufrufen, im service task müsste ich aber so lange "warten" bis das befüllen beendet ist und gleichzeitig den ProgressIndicator updaten?

3. Model Class
--> bezogen auf mein o.g. Beispiel, welche Logik würde man denn hier unterbringen?
--> wenn ich Dich richtig verstanden habe muss das befüllen der Datenbank Tabelle ja ebenfalls ein DAO erledigen - ist das dann auch eine extra Klasse oder eine Methode im Model?

Oh je, ich merke gerade das es unheimlich schwierig für mich ist meine "PainPoints" zu erklären - hoffe aber es kommt vielleicht so viel rüber das Du bei Gelegenheit vielleicht bezogen auf mein o.g. Beispiel mir eine grobe Skizze liefern kannst was man wo reinpacken würde.

Das mit der ControllerFactory und den Injectables und ExceptionListener Interface habt Ihr mir ja schon erklärt, das würde ich dann so nehmen um Daten zwischen Model <-> Controller auszutauschen.

Gruß
Ralf
 

dzim

Top Contributor
Hm. Ich fürchte fast, dafür müsste ich mal ein neues Beispiel machen...
Da es dann irgendwann unweigerlich komplexer wird, müsste man bisher einiges von den bisherigen kombinieren.

Ich versuche es mal ganz simpel wie folgt.

Paketstruktur:
Code:
my.package
    Application
my.package.model
    Model
my.package.services
    DAOService
my.package.ui
    MainController
my.package.ui.fxml
    Main.fxml
my.package.utils
    ControllerInjector (oder wie das Ding auch immer heißt, mit dem du die ControllerFactory im FXMLLoader fütterst)
    ModelInjectable (Interface)
    DAOServiceInjectable (Interface)

In Application: Instanziiere Model und DAOService. Controller Factory and FXMLLoader anhängen. Dort drin entsprechend testen, ob der Controller die Interfaces (hier ModelInjectable, DAOServiceInjectable, ...) implementiert und entsprechend mit den in Application angelegten Instanzen füttern.

Im Controller, wo du es brauchst, den DAOService starten - eventuell hat der eine Methode, dem du die zu aktualisierende Property/Proerties (StringProperty, etc.) übergibst. Der Task kann entweder direkt, oder am Ende des Services (es gibt ja Callbacks für das Event, wenn er erfolgreich fertig ist), die Properties anpassen.
Wieder im Controller hängst du an die Properties deinen Listener (am Besten in der initialize-Methode). und reagierst auf die Änderung.

Damit hast du MVC schon mal erledigt, denn dein Model ist separiert vom View und vom Control (hier kann man sich streiten, ob das C dein DAO oder auch der Controller ist - ich würde zu ersterem tendieren, aber ist immer gut alles zu trennen).

Ich würde, je komplexer es wird, eher zu DependencyInjection-Frameworks, wie etwa Google Guice (recht flott und leichtgewichtig) oder gar Spring Boot greifen (hat den Nachteil, dass es gut funktioniert, aber recht träge beim Start ist -> Preloader fast schon Pflicht, vermute ich).
Mein Repository hat zu beiden Beispiele, aber ich denke, die werden dich für's erste erschlagen. Gerade Spring hat eine, im Vergleich, erst einmal vielleicht etwas zu hohe Einstiegshürde für dich.
 

ralfb1105

Bekanntes Mitglied
Hallo Daniel,

in der Tat bin ich davon überzeugt das z.B. Google Guice, nach 15 Minuten Tutorialpoint Introduction, viel zu hoch für mich ist - Overloaded will kill me :confused:

Da tendiere ich schon eher zu Deinem "Beispiel" was Du oben erklärt hast :D
Ich bin mir rein vom lesen nicht sicher ob ich alles verstanden und umsetzen kann, würde aber in den kommenden Wochen (zeitlich ist es vermutlich erst übernächste Woche wieder etwas mehr Zeit) mal probieren so etwas als einfache, wie von mir vorher skizzierte kleine Applikation umzusetzen.

Die größten Bauchschmerzen habe ich, rein schon mal von der theoretischen Betrachtung und dem Versuch es im Kopf umzusetzen, mit dem Controller Part in Verbindung mit dem DAOService, der Aktualisierung und wie sich das GUI dann verhält. Genau genommen dieser Part:
Im Controller, wo du es brauchst, den DAOService starten - eventuell hat der eine Methode, dem du die zu aktualisierende Property/Proerties (StringProperty, etc.) übergibst. Der Task kann entweder direkt, oder am Ende des Services (es gibt ja Callbacks für das Event, wenn er erfolgreich fertig ist), die Properties anpassen.
Wieder im Controller hängst du an die Properties deinen Listener (am Besten in der initialize-Methode). und reagierst auf die Änderung.
Anyway, Versuch macht klug.
Da ich mir sicher bin das ich dazu bestimmt weitere Fragen haben werde, was meinst Du, was wäre am sinnvollsten:
  1. hier in diesem Thread weiter posten
  2. neues Thema erstellen wenn die ersten Fragen aufkommen
Unabhängig davon würde ich in diesem Zuge auch einmal probieren das Ganze, na ja bis jetzt habe ich ja noch gar nichts ;), auf Github zu legen.

Wie ist Deine Meinung?

Gruß
Ralf
 

dzim

Top Contributor
Mach ein neues Thema zu konkreten Fragen.

Mach eventuell auf Github einen Gist - dann musst du nicht gerade ein Projekt erstellen. Man kann dann dort auch noch Kommentare hinterlassen, wobei ich denke, wir bleiben hier im Forum zur weiteren Verarbeitung. Die Gists selbst sind auch versioniert, so dass du den Änderungsprozess dort sehen kannst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JavaFX Label lässt sich nicht mehrmals färben AWT, Swing, JavaFX & SWT 7
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
H JavaFX Label.Text mit bind an DoubleProperty binden AWT, Swing, JavaFX & SWT 3
izoards Ausdruck auf Label Drucker AWT, Swing, JavaFX & SWT 1
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
T Anderen Java Code durch Code kompilieren und Fehler in Label ausgeben AWT, Swing, JavaFX & SWT 5
I BoxLayout zentriert Label nicht AWT, Swing, JavaFX & SWT 7
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2
R JavaFX Label oder Imageview anzeigen mit Buttonklick AWT, Swing, JavaFX & SWT 4
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
Trèfle JavaFX Formattierung im Label AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Wie Text Label in neuem Window von Main Stage setzen? AWT, Swing, JavaFX & SWT 6
F Countdown in Label anzeigen AWT, Swing, JavaFX & SWT 14
H JavaFX - Label aktualisieren AWT, Swing, JavaFX & SWT 1
J Dateiname im Label einblenden AWT, Swing, JavaFX & SWT 4
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
xYurisha Aus einer Gui Buttons, Label und ProgessBars entfernen AWT, Swing, JavaFX & SWT 4
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
zhermann NullPointerException bei Label.setText() AWT, Swing, JavaFX & SWT 5
T JavaFX Label mit mehreren Images AWT, Swing, JavaFX & SWT 11
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
L JavaFX ContextMenu bei Label mit Linksklick AWT, Swing, JavaFX & SWT 4
J JavaFX - Felder (Label) in einer ForSchleife bearbeiten AWT, Swing, JavaFX & SWT 4
N Anordnung der Label AWT, Swing, JavaFX & SWT 3
N Swing Label auf Panel legen.. AWT, Swing, JavaFX & SWT 2
R Swing JLabel berührung an einem anderen Label prüfen AWT, Swing, JavaFX & SWT 3
U Java FX Zusätzliches Label per Knopfdruck während der Laufzeit auf Panel einfügen. AWT, Swing, JavaFX & SWT 2
M Text in einem Label fett setzen AWT, Swing, JavaFX & SWT 4
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
T CSS Rechtsbüdniges Label mit Zwei Zeilen AWT, Swing, JavaFX & SWT 7
J JavaFX Translation Text/Label AWT, Swing, JavaFX & SWT 2
Tom299 JavaFX Text oder Label benutzen AWT, Swing, JavaFX & SWT 4
C Textfeld und Label werden nicht angezeigt (Ubuntu) AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
Augenblau JavaFX Wechselnde Werte in Label darstellen AWT, Swing, JavaFX & SWT 7
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
S JButton-Label vergrößern AWT, Swing, JavaFX & SWT 2
M label mit icon verschieben. AWT, Swing, JavaFX & SWT 1
B Swing JXMapKit Mausemove in Label anzeigen AWT, Swing, JavaFX & SWT 0
K Bild in Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
S JButton u. Label auf paint-Methode AWT, Swing, JavaFX & SWT 1
G Label wird nicht erstellt AWT, Swing, JavaFX & SWT 0
7 AWT problem: KeyListener/ test im Label umändern AWT, Swing, JavaFX & SWT 4
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
G Label erstellen AWT, Swing, JavaFX & SWT 6
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
F JavaFX label.getWidth() AWT, Swing, JavaFX & SWT 2
T Swing Label aus anderer Methode bearbeiten AWT, Swing, JavaFX & SWT 2
N Input/Output Stream werte in Label anzeigen. AWT, Swing, JavaFX & SWT 6
R JavaFX Label ändern in aufgerufener AnchorPane AWT, Swing, JavaFX & SWT 3
B Swing label.setText() macht probleme AWT, Swing, JavaFX & SWT 5
G JavaFX CSS: Label in GridPane rechts ausrichten AWT, Swing, JavaFX & SWT 9
T Swing Aktuelle Größe eines Textes in einem Label darstellen AWT, Swing, JavaFX & SWT 3
KrokoDiehl Swing Buchstaben im Label anders färben AWT, Swing, JavaFX & SWT 4
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
P Label rotieren mit Timer AWT, Swing, JavaFX & SWT 5
C Label wird nicht an der richtigen Position angezeigt.. AWT, Swing, JavaFX & SWT 7
H Label mit Icon positionieren AWT, Swing, JavaFX & SWT 14
E Netbeans: Buttons mit Label bzw. Rahmen unterlegen AWT, Swing, JavaFX & SWT 8
J resize - Label bleibt erst schwarz AWT, Swing, JavaFX & SWT 4
T label überschriebt seine werte-SWT AWT, Swing, JavaFX & SWT 3
O Swing JTree um Label (oder Panel) erweitern AWT, Swing, JavaFX & SWT 9
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
N Label auf Hauptfenster manipulieren AWT, Swing, JavaFX & SWT 2
S VAADIN: Problem mit Label AWT, Swing, JavaFX & SWT 18
P Ausgabe Label AWT, Swing, JavaFX & SWT 6
GUI-Programmer Informations-Panel an Label AWT, Swing, JavaFX & SWT 2
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
B Label breite ermitteln vor dem rendern? AWT, Swing, JavaFX & SWT 7
A Bekomme das Label nicht in die Mitte von Reihe AWT, Swing, JavaFX & SWT 7
H SWT Markierbares Label AWT, Swing, JavaFX & SWT 8
A Swing Box Label ausrichten AWT, Swing, JavaFX & SWT 3
R Label in den Vordergrund einblenden AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
O Swing Label(bzw. Grafik) verdekt von anderm Label AWT, Swing, JavaFX & SWT 2
A TextField und Label AWT, Swing, JavaFX & SWT 8
L Label dynamisch awt AWT, Swing, JavaFX & SWT 2
J Label mit transparentem hintergrund - geht das? AWT, Swing, JavaFX & SWT 21
B Die Werte von getLocation() im Label anzeigen AWT, Swing, JavaFX & SWT 4
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Label Hintergrundbild mit Text AWT, Swing, JavaFX & SWT 6
A SWT - Farbe von Text auf Label ändern AWT, Swing, JavaFX & SWT 2
M gridbaglayout - abstand bei label und field AWT, Swing, JavaFX & SWT 8
hdi SWT Label Text vertikal zentrieren AWT, Swing, JavaFX & SWT 6
T In einem Label scrollen AWT, Swing, JavaFX & SWT 3
Spot84 swt label zeilenumbruch will nicht funktionieren AWT, Swing, JavaFX & SWT 1
L JFreeChar Label für StackedBar AWT, Swing, JavaFX & SWT 3
lumo SWT Label - onResize? AWT, Swing, JavaFX & SWT 5
DasDogma AWT Problem bei Wertzuweisung für Label AWT, Swing, JavaFX & SWT 3
A Label hat falsche Position AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben