Wieso Fenster im EDT sichtbar machen?

Status
Nicht offen für weitere Antworten.

SebiB90

Top Contributor
Hallo,

hab vllt eine dumme Frage. Nur ich verstehs halt nicht.
Im Forum sehe ich oft so ein Code in der main methode:
Code:
EventQueue.invokeLater(new Runnable() { 
            @Override 
            public void run() { 
                new JFrame().setVisible(true); //JFrame = das Hauptfenster der Anwendung
            } 
        });

wieso wird die Anweisung in die EventQueue gepackt? Wieso nicht einfach nur?

Code:
new JFrame().setVisible(true);

Ich weiß, dass mit der ersten Variante das setVisible() in dem EDT ausgeführt wird.
Aber was bringt das für ein Vorteil?

Mfg
SebiB90
 

André Uhres

Top Contributor
SebiB90 hat gesagt.:
Aber was bringt das für ein Vorteil?
Der Code wird dadurch "thread safe".
Der meiste Code, der Swing Methoden aufruft, muss auf dem "event dispatch thread" laufen.
Das ist notwendig, weil die meisten Swing Methoden nicht "thread safe" sind.
mehr
 

Illuvatar

Top Contributor
Eine Frage dazu: Ich sehe es nur selten, aber manche verlagern auch ein setVisible aus der main-Methode in den EDT. Bringt das irgendwas? Der EDT läuft ja noch nichtmal bevor das erste Fenster sichtbar ist, oder? Wäre das nur für den Fall, dass die main-methode innerhalb einer VM öfters aufgerufen wird, sinnvoll?
 

SebiB90

Top Contributor
Illuvatar hat gesagt.:
Eine Frage dazu: Ich sehe es nur selten, aber manche verlagern auch ein setVisible aus der main-Methode in den EDT. Bringt das irgendwas? Der EDT läuft ja noch nichtmal bevor das erste Fenster sichtbar ist, oder? Wäre das nur für den Fall, dass die main-methode innerhalb einer VM öfters aufgerufen wird, sinnvoll?
genau das war doch meine frage ;)
 

André Uhres

Top Contributor
Folgenden Code kann ich keine 40 mal starten, ohne daß er wenigstens einmal
einfach hängen bleibt (also der JFrame wird nicht sichtbar).
Wenn man das Ding mit "invokeLater" startet, ist das Problem behoben.
Code:
package demo;

/**
 * Main window
 * @author      Andreas Dvorak
 */
import java.awt.*;
import javax.swing.*;

public class MainFrame {

    public boolean status = true;
    private JFrame frame = null;

    public MainFrame() {
        initFrame();
    }

    public void initFrame() {
        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 620);
        frame.setTitle("Bestenliste");
        // In der Mitte des Bildschirms platzieren
        frame.setLocation(
                (Toolkit.getDefaultToolkit().getScreenSize().width -
                frame.getSize().width) / 2,
                (Toolkit.getDefaultToolkit().getScreenSize().height -
                frame.getSize().height) / 2);
        StartPanel panel = new StartPanel();
        frame.setContentPane(panel.getPanel());
        frame.setVisible(true);
    }

    public static void main(final String[] args) {
        //DU MUSST DAS DING MIT "invokeLater" STARTEN !!!
//        java.awt.EventQueue.invokeLater(new Runnable() {
//
//            public void run() {
                new MainFrame();
//            }
//        });
    }
}

class StartPanel {

    private String version = "1.0";

    public JPanel getPanel() {
        JPanel panel = new JPanel();
        JPanel uppanel = new JPanel();
        uppanel.setBackground(new java.awt.Color(238, 238, 238));
        JPanel midpanel = new JPanel();
        midpanel.setBackground(new java.awt.Color(238, 238, 238));
        JPanel downpanel = new JPanel();
        downpanel.setBackground(new java.awt.Color(238, 238, 238));
        JPanel statuspanel = new JPanel();
        statuspanel.setBackground(new java.awt.Color(238, 238, 238));
        JTextPane text1 = new JTextPane();
        text1.setBackground(new java.awt.Color(238, 238, 238));
        JTextPane text2 = new JTextPane();
        text2.setBackground(new java.awt.Color(238, 238, 238));
        JTextPane text3 = new JTextPane();
        text3.setBackground(new java.awt.Color(238, 238, 238));
        JTextPane statustext = new JTextPane();
        statustext.setBackground(new java.awt.Color(238, 238, 238));
        GridLayout gridLayout = new GridLayout();
        gridLayout.setRows(4);
        gridLayout.setColumns(1);
        panel.setLayout(gridLayout);
        FlowLayout flowLayout = new FlowLayout();
        flowLayout.setHgap(20);
        flowLayout.setVgap(40);
        uppanel.setLayout(flowLayout);
        panel.add(uppanel);
        panel.add(midpanel);
        panel.add(downpanel);
        panel.add(statuspanel);
        text1.setText("Bestenliste für die Verwaltung von Laufergebnissen");
        text1.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 18));
        text1.setEditable(false);
        text2.setText("Andreas Dvorak");
        text2.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 18));
        text2.setEditable(false);
        text3.setText("Version " + version);
        text3.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 18));
        text3.setEditable(false);
        statustext.setText("Status: registriert");
        statustext.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 14));
        statustext.setEditable(false);
        uppanel.add(text1);
        midpanel.add(text2);
        downpanel.add(text3);
        statuspanel.add(statustext);
        return panel;
    }
}
 

Illuvatar

Top Contributor
SebiB90 hat gesagt.:
genau das war doch meine frage ;)
Ups, überlesen dass du auch die main-Methode meintest.

@Andre: Na gut, ich werds mir merken. Ich finds nur seltsam, ich hab das noch nie so gemacht, und es ist mir noch nie aufgefallen dass es nicht funktioniert hätte. Auch im Javabuch stand das glaub ich immer ohne invokeLater.
 

Verjigorm

Top Contributor
Also wenn ich ne Gui starte, hab ich auch noch niemals invokeLater benutzt und noch niemals Probleme mit gehabt.

Ich frag mich auch immer nach dem Sinn.
 

André Uhres

Top Contributor
Illuvatar hat gesagt.:
ich hab das noch nie so gemacht, und es ist mir noch nie aufgefallen dass es nicht funktioniert hätte.
Some Swing component methods are labelled "thread safe" in the API specification;
these can be safely invoked from any thread. All other Swing component methods must be invoked
from the event dispatch thread
. Programs that ignore this rule may function correctly most of the time,
but are subject to unpredictable errors that are difficult to reproduce.

http://java.sun.com/docs/books/tutorial/uiswing/concurrency/dispatch.html
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html

Verjigorm hat gesagt.:
Also wenn ich ne Gui starte, hab ich auch noch niemals invokeLater benutzt und noch niemals Probleme mit gehabt.
Ich frag mich auch immer nach dem Sinn.
Liest eigentlich auch irgendjemand das, was in diesem Thread geschrieben wurde :roll: :?:
Wer danach immer noch nach dem Sinn fragt, der ist aber ein Komischer, oder er will es einfach nicht verstehen :shock:
 

The_S

Top Contributor
@André heißt das, dass wirkliche ALLE Methoden in Swing-Componenten, die nicht als thread-safe markiert sind, über den EDT aufgerufen werden müssen? Also auch welche, die die Darstellung eigentlich gar nicht betreffen!?
 

André Uhres

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
@André heißt das, dass wirkliche ALLE Methoden in Swing-Componenten, die nicht als thread-safe markiert sind, über den EDT aufgerufen werden müssen? Also auch welche, die die Darstellung eigentlich gar nicht betreffen!?
Afaik wird die Richtlinie nirgendwo eingegrenzt. Ausserdem haben ja wohl alle Swing Komponentenmethoden
irgendeinen Bezug zur Oberfläche, was die strikte Einhaltung der Richtlinie sinnvoll erscheinen lässt.
 

byte

Top Contributor
Das Thema ist in SWT eindeutig besser umgesetzt. Da fliegt nämlich eine Exception, wenn man aus einem anderen Thread GUI-Komponenten manipuliert. Auf diese Weise kann man nichts falsch machen.
 

The_S

Top Contributor
Ich meine z. B. Methoden wie JFileChooser#getSelectedFile ... die Methode wird wohl meist dann aufgerufen, wenn der JFileChooser gar nicht mehr sichtbar ist und sollte somit wohl keine Auswirkungen auf die Oberfläche haben!?
 

André Uhres

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Ich meine z. B. Methoden wie JFileChooser#getSelectedFile ... die Methode wird wohl meist dann aufgerufen, wenn der JFileChooser gar nicht mehr sichtbar ist und sollte somit wohl keine Auswirkungen auf die Oberfläche haben!?
Aber die Selektion kommt doch durch ein Event auf der Oberfläche.
Demnach muss man auch in diesem Fall mit dem EDT synchronisieren.
 

byte

Top Contributor
Grundsätzlich sollten wohl alle Getter problemlos funktionieren, weil sie i.d.R. nur einen Wert zurückliefern und die GUI nicht manipulieren. Anders ist es bei Settern.
Wenn ich z.B. bei einem JLabel den Text setze, dann wird der Repaint-Mechanismus angestoßen und die GUI aktualisiert. Wenn ich mir hingegen den Text des JLabels mit getText() hole, dann hat das keine Auswirkungen auf die GUI, muss also nicht asynchron passieren.

Aber die Doku ist da sehr schwammig. Ich meine mich z.B. zu erinnern, dass JLabel#setText() thread-safe ist. In der Javadoc ist davon jedoch nichts zu lesen.

Sun hätte einfach eine RuntimeExc. werfen sollen und fertig. Das würde es dem Programmierer sehr vereinfachen und würde wahrscheinlich die Qualität vieler Swing-Clients deutlich verbessern.
 

byte

Top Contributor
André Uhres hat gesagt.:
Aber die Selektion kommt doch durch ein Event auf der Oberfläche.
Demnach muss man auch in diesem Fall mit dem EDT synchronisieren.
Ne:

JFileChooser:
Code:
    public File getSelectedFile() {
	return selectedFile;
    }
 

André Uhres

Top Contributor
Der Getter muss trotzdem synchronisiert werden, wenn man einen sinnvollen Wert haben möchte. Der Sinn ist ja, den vom Benutzer ausgewählten Wert zu bekommen.
 

byte

Top Contributor
Bekommst Du doch. Der Getter triggert kein Event und hat somit keine Nebeneffekte auf den EDT.
 

André Uhres

Top Contributor
Darum geht's ja auch nicht :wink:
Ich bekomm den Wert nur wenn ich synchronisiere. Anders ist es ja gar nicht denkbar.
 

André Uhres

Top Contributor
Wenn der Benutzer noch nix ausgewählt hat, muss das Programm darauf warten, daß er es tut, um die Selektion auslesen und verarbeiten zu können.
 

byte

Top Contributor
Was hat das jetzt mit invokeLater zu tun?
Die Methode liefert das selektierte File, egal ob schon was selektiert wurde oder nicht. Natürlich ist es sinnfrei, nebenläufig darauf zuzugreifen, wenn man die endgültige Selektion haben will.
 

Hollow

Mitglied
Ähm das mit dem invokeLater und Componenten, trifft das auch auf den Fall zu das ich die PaintComponent von nem
JPanel überschreibe? Wie zum Beispiel bei dem Spiel in Quaxlis Tutorial. Muss ich das repaint dann auch in ein
invokeLater packen?
 

André Uhres

Top Contributor
byto hat gesagt.:
Was hat das jetzt mit invokeLater zu tun?
Ich weiss nicht, was du jetzt wieder mit invokeLater willst :roll: .
Wir sprechen ja jetzt einfach nur darüber, daß alle Swing Komponentenmethoden,
die nicht als "thread safe" gekennzeichnet sind, vom "event dispatch thread" aus aufgerufen werden müssen.

byto hat gesagt.:
Die Methode liefert das selektierte File, egal ob schon was selektiert wurde oder nicht. Natürlich ist es sinnfrei, nebenläufig darauf zuzugreifen, wenn man die endgültige Selektion haben will.
Das versuch ich ja die ganze Zeit klar zu machen.

Hollow hat gesagt.:
Muss ich das repaint dann auch in ein invokeLater packen?
Nein, die Methode repaint() ist "thread safe".
 

byte

Top Contributor
André Uhres hat gesagt.:
byto hat gesagt.:
Was hat das jetzt mit invokeLater zu tun?
Ich weiss nicht, was du jetzt wieder mit invokeLater willst :roll: .
Wir sprechen ja jetzt einfach nur darüber, daß alle Swing Komponentenmethoden,
die nicht als "thread safe" gekennzeichnet sind, vom "event dispatch thread" aus aufgerufen werden müssen.

Ja, genau darüber sprechen wir. Und genau darauf bezieht sich das von mir angesprochene invokeLater...

Im übrigen werden in meiner Javadoc nicht alle thread-safe Methoden in der Javadoc als solche gekennzeichnet. :oops: Du schreibst z.B. dass repaint() thread-safe ist. Wo findest Du das in der Javadoc? In der Beschreibung zu Component#repaint() finde ich nichts dergleichen. Genauso wenig wie in anderen Methodenbeschreibungen, die bekannterweise thread-safe sind (wie afaik JLabel#setText()).

Aus diesem Grund würde ich im Zweifel auf Nummer-Sicher gehen und Aufrufe aus einem anderen Thread, die die GUI beeinflussen, per invokeLater machen. Einfache Getter hingegen (wie bei JFileChooser#getSelectedFile()) können direkt aufgerufen werden. Im Zweifel hilft immer ein Blick in die Sourcen, ob diejenige Methode ein EDT-Event triggert oder einfach nur einen Wert zurückliefert.

Der Grund, warum man bestimmte Methoden aus einem zweiten Thread nicht direkt aufrufen soll, ist ja eben, wenn diese EDT-Events feuern. Der EDT könnte in diesem Moment beschäftigt sein, was zur Folge hätte, dass die GUI träge reagiert, hängt oder sich gar fehl verhält. Wenn die Methoden hingegen keine EDT-Events feuern, gelten die gleichen Grundsätze wie bei der ganz normalen nebenläufigen Programmierung. Swing ist schließlich kein Hexenwerk. ;)
 
S

SlaterB

Gast
> Im Zweifel hilft immer ein Blick in die Sourcen, ob diejenige Methode ein EDT-Event triggert oder einfach nur einen Wert zurückliefert.

also zum Zurückgeben reicht ein Blick auf den Rückgabewert + Namen der Operation (get)
oder gibts gar Beispiele für get-Operationen, die sowas böses machen?
 

byte

Top Contributor
Wenn sich Sun an seine eigenen Konventionen hält - also dass Getter wirklich nur einen Wert zurückliefern - dann sollten Getter perse problemlos sein. Skeptisch wäre ich immer bei firePropertyChange(...) bzw. generell bei Settern oder Methoden, die direkt oder indirekt die GUI verändern.
 

Marco13

Top Contributor
Hab jetzt nicht alles nachvollzogen, aber streue mal so ein, dass der Aufruf einer get-Methode außerhalb des EDT durchaus ein unerwünschtes Ergebnis liefern kann, wenn die set-Methoden im EDT aufgerufen werden...
Code:
SwingUtilities.invokeLater() { ... textField.setText("Hallo"); ... }
String nichtHallo = textField.getText(); // Passiert das VOR oder NACH dem "setText"?
aber das sollte klar sein....
 

byte

Top Contributor
Dass man bei invokeLater die Synchronität verliert sollte klar sein, jo. Es gibt übrigens auch noch invokeAndWait().

Fakt ist aber, dass das Konzept nicht gut durchdacht ist. Laut André Uhres ist es ja irgendwo dokumentiert, welche Methoden thread-safe sind - jedoch offenbar nicht dort, wo man es vermutet (in der Javadoc). Bei SWT fliegt eine Laufzeit-Exception, das ist wesentlich sicherer. Der Entwickler wird gezwungen, es richtig zu machen. ;)
 

André Uhres

Top Contributor
byto hat gesagt.:
Ja, genau darüber sprechen wir. Und genau darauf bezieht sich das von mir angesprochene invokeLater...
invokeLater macht gewöhnlich keinen Sinn, wenn man auf dem EDT ist, wovon man bei einem EventListener ausgehen kann:
wenn der Benutzer eine Selektion macht, schickt er einen Event auf den EDT.

byto hat gesagt.:
Du schreibst z.B. dass repaint() thread-safe ist. Wo findest Du das in der Javadoc? In der Beschreibung zu Component#repaint() finde ich nichts dergleichen.
Die Swing Malmechanismen werden hier erklärt: http://wiki.byte-welt.net/wiki/Malen_in_AWT_und_Swing
Ein entsprechender Link ist in der API enthalten.

byto hat gesagt.:
Genauso wenig wie in anderen Methodenbeschreibungen, die bekannterweise thread-safe sind (wie afaik JLabel#setText()).
JTextComponent#setText ist "thread safe", JLabel#setText aber nicht.
Alle Swing Komponentenmetoden, die nicht "thread safe" sind, müssen vom EDT aus aufgerufen werden.
Getter aus anderen Threads aufzurufen macht keinen Sinn, wie du schon richtig erkannt hast:
byto hat gesagt.:
Natürlich ist es sinnfrei, nebenläufig darauf zuzugreifen, wenn man die endgültige Selektion haben will.
 

Verjigorm

Top Contributor
Könnte dazu nicht mal jemand ein paar Zeilen Beispielcode tippseln?
So in der Art "So ist es falsch" und "So macht man es richtig"
Vielelicht direkt in die FAQ damit ...

So ganz blick ich da nämlich nich durch :D
 

André Uhres

Top Contributor
byto hat gesagt.:
So habe ich das nicht geschrieben!
:lol: Steht zumindest so unter deinem Namen, aber vielleicht hat's ja deine Mutti diktiert :lol:

byto hat gesagt.:
Möglich ist es allemal, auch wenn Du das nicht einsehen willst. :roll:
Daß es möglich ist, seh ich ein. Nur richtig ist es nicht, sondern sinnfrei,
wie du's geschrieben hast, auch wenn du das jetzt wieder abstreitest :lol:
 

Verjigorm

Top Contributor
André Uhres hat gesagt.:
Verjigorm hat gesagt.:
Könnte dazu nicht mal jemand ein paar Zeilen Beispielcode tippseln?
http://www.java-forum.org/de/viewtopic.php?p=430319#430319

schön ... du schreibst, du kannst das Ding nicht 40mal starten ohne irgendeinen "Fehler" ...
Hab irgendwelche JFrames schon tausendfach ohne invokelater gestartet und nie ein Problem gehabt, ist das nun Glück? oO

Und was hier geredet wird mit Methodenaufrufe die nicht thread-safe sind ..
muss ich dann um jeden 2. Methodenaufruf invokelater() machen oder wie?

(Ich versuchs ja zu verstehen :D, aber der positive/negative Effekt von machen bzw. nicht machen ist mir überhaupt nicht erkennbar)
 

André Uhres

Top Contributor
byto hat gesagt.:
byto hat gesagt.:
Natürlich ist es sinnfrei, nebenläufig darauf zuzugreifen, wenn man die endgültige Selektion haben will.
Jetzt verstanden? :roll:
Das hab ich genauso zitiert und auch so verstanden (ein Wort grösser darzustellen ändert kaum etwas am Informationsgehalt).
Eine Richtlinie durch eine Theorie in Frage zu stellen, ist kaum förderlich,
es sei denn, die Theorie bringt auch einen wesentlichen praktischen Nutzen.
Falls es dich jedoch beruhigt, wiederhole ich: ich seh ein, daß es möglich ist (mehr nicht).

Verjigorm hat gesagt.:
Hab irgendwelche JFrames schon tausendfach ohne invokelater gestartet und nie ein Problem gehabt, ist das nun Glück?
Ja.
Some Swing component methods are labelled "thread safe" in the API specification;
these can be safely invoked from any thread. All other Swing component methods must be invoked
from the event dispatch thread
.
Programs that ignore this rule may function correctly most of the time,
but are subject to unpredictable errors that are difficult to reproduce.

http://java.sun.com/docs/books/tutorial/uiswing/concurrency/dispatch.html
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html

Verjigorm hat gesagt.:
Und was hier geredet wird mit Methodenaufrufe die nicht thread-safe sind ..
muss ich dann um jeden 2. Methodenaufruf invokelater() machen oder wie?
Wenn du die GUI wie empfohlen startest, bist du auf dem EDT und bleibst auch drauf.
Du brauchst dann kein zusätzliches invokelater. Der Aufruf von invokelater ist aber notwendig,
wenn du einen speziellen Workerthread (auch Backgroundthread genannt) startest
und von dort aus Swingkomponenten ansprichst. Workerthreads werden benötigt,
damit der EDT nicht durch langwierige Prozesse blockiert wird.
 

Verjigorm

Top Contributor
André Uhres hat gesagt.:
Wenn du die GUI wie empfohlen startest, bist du auf dem EDT und bleibst auch drauf.
Du brauchst dann kein zusätzliches invokelater. Der Aufruf von invokelater ist aber notwendig,
wenn du einen speziellen Workerthread (auch Backgroundthread genannt) startest
und von dort aus Swingkomponenten ansprichst. Workerthreads werden benötigt,
damit der EDT nicht durch langwierige Prozesse blockiert wird.

Ok gut, ich denke soweit hab ich es wohl gerafft.
Nur deine Aussage mit dem Workerthread irritiert mich nun etwas :D

Starte GUI mit Invokelater -> EDT

Wenn ich nun nen WorkerThread starte, arbeitet der aber NICHT auf dem EDT (was ja der Sinn der Sache ist), wird aber vom EDT aus gestartet, weil wir die GUI ja daraus starten.
Oder seh ich das falsch? :?:
Danke für die Geduld ;)
 

Verjigorm

Top Contributor
Gut gut, mein Mosaik ist langsam fertig :D

Wenn ich also nun meine GUI über invokeLater gestartet habe und z.B. per Buttonclick nen JDialog aufmache, muss ich aber nicht nochmal invokeLater benutzen?

Bzw. generell: Wann benutzt man denn sonst noch invokeLater und invokeAndWait?
 

André Uhres

Top Contributor
Verjigorm hat gesagt.:
Wenn ich also nun meine GUI über invokeLater gestartet habe und z.B. per Buttonclick nen JDialog aufmache, muss ich aber nicht nochmal invokeLater benutzen?
nein

Verjigorm hat gesagt.:
Bzw. generell: Wann benutzt man denn sonst noch invokeLater und invokeAndWait?
invokeLater benutzt man um den Code später auf dem EDT auszuführen
(z.B. um ein JLabel von einem Workerthread aus zu aktualisieren).
invokeAndWait benutzt man um das Programm zu blockieren, bis der Code auf dem EDT ausgeführt wurde
(z.B. um ein JLabel von einem Workerthread aus zu aktualisieren und erst weiterzumachen, wenn das geschehen ist).

Java 6 hat auch noch SwingWorker eingeführt, um zeitaufwendige oberflächenbezogene Prozesse in einem speziellen Thread auszuführen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
J JavaFX CSS einbinden - Wieso will das einfach nicht!!! AWT, Swing, JavaFX & SWT 1
LexeB4F setValueAT geht nicht... wieso? AWT, Swing, JavaFX & SWT 14
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
C Wieso nur erster Buchstabe bei Caesar-Entschlüsselung? AWT, Swing, JavaFX & SWT 2
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
K LayoutManager Wieso verschwinden Elemente? AWT, Swing, JavaFX & SWT 20
K Applet Wieso kann ich keine Array im Applet initialisieren AWT, Swing, JavaFX & SWT 13
propra Wieso wird paintComponent() beim Start 2 malausgeführt? AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Wieso wird das Bild nicht angezeigt ? AWT, Swing, JavaFX & SWT 4
T wieso leere Oberfläche? AWT, Swing, JavaFX & SWT 5
G Swing Wieso braucht man nach setVisible mal ein revalidate und mal nicht? AWT, Swing, JavaFX & SWT 8
C Wieso funktionert der CellRenderer nicht? AWT, Swing, JavaFX & SWT 2
L Wieso werden die Icons nicht dargestellt? AWT, Swing, JavaFX & SWT 2
W Wieso SerialVersionUID bei Swing-Komponenten AWT, Swing, JavaFX & SWT 5
N Freiraum in der GUI - Wieso? AWT, Swing, JavaFX & SWT 6
M Wieso geht das nicht! AWT, Swing, JavaFX & SWT 3
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
G Wieso wird meine Scrollbar nicht angezeigt? AWT, Swing, JavaFX & SWT 3
K JTable - wieso funktioniert der Autoscroll nicht? AWT, Swing, JavaFX & SWT 5
Paule JFrame bleibt leer, wieso? AWT, Swing, JavaFX & SWT 2
S Wieso werden die Bilder nicht angezeigt? AWT, Swing, JavaFX & SWT 4
G Progressbar aktualisiert sich nicht (vernünftig). WIESO? AWT, Swing, JavaFX & SWT 2
M suche geeignetes Fenster zur Anzeige AWT, Swing, JavaFX & SWT 49
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
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
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
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
L Swing Files abspeichern mit Save as Dialog Fenster AWT, Swing, JavaFX & SWT 5
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
G Zuletzt aktives Fenster, vor dem aktuell aktiven AWT, Swing, JavaFX & SWT 2
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
S Swing Alles beenden bei Fenster mit Scroll-Balken AWT, Swing, JavaFX & SWT 6
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
W Zweites/neues Fenster durch Button öffnen AWT, Swing, JavaFX & SWT 6
CptK Fokus auf geöffnetes Zweit-Fenster setzen und Eingaben außerhalb blocken AWT, Swing, JavaFX & SWT 2
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
MiMa JavaFX Fenster in JavaFX öffnen Schliessen (Initialisierung) AWT, Swing, JavaFX & SWT 20
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L Hintergrundbild im Fenster darstellen AWT, Swing, JavaFX & SWT 9
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
N Drag and Drop Fenster AWT, Swing, JavaFX & SWT 11
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
Bluedaishi JavaFX Programm start mit zwei scenen bzw Fenster AWT, Swing, JavaFX & SWT 1
J Fenster mit Inhalten aus einem Array Füllen AWT, Swing, JavaFX & SWT 4
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
A Fenster genau unterhalb von JTextField anzeigen AWT, Swing, JavaFX & SWT 1
J Overlay Panel statt neues Fenster AWT, Swing, JavaFX & SWT 6
S Swing Bei start des Programmes kein Fenster zu sehen AWT, Swing, JavaFX & SWT 1
X Neues Fenster mit Button öffnen und bearbeiten AWT, Swing, JavaFX & SWT 4
platofan23 JAVAFX zweites Fenster öffnen AWT, Swing, JavaFX & SWT 2
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
P JavaFX Fenster lädt nicht mehr AWT, Swing, JavaFX & SWT 4
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
D Swing Neues (3.) Fenster öffnen AWT, Swing, JavaFX & SWT 2
G JavaFX Fenster 1 Array übertragen zur Fenster 2 AWT, Swing, JavaFX & SWT 0
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
K Fenster welches den Sieger anzeigt AWT, Swing, JavaFX & SWT 5
O JavaFX Fenster scließen AWT, Swing, JavaFX & SWT 4
A Swing Fenster ändert Position bei Mausklick nicht AWT, Swing, JavaFX & SWT 2
S SWT neues Fenster, buttons aus alten etc... AWT, Swing, JavaFX & SWT 0
D Java FXML mehrere Fenster AWT, Swing, JavaFX & SWT 4
L Input aus Sub-Fenster Startfenster übergeben AWT, Swing, JavaFX & SWT 5
B AWT Fenster schließt nicht AWT, Swing, JavaFX & SWT 2
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
T Fenster schließen AWT, Swing, JavaFX & SWT 4
K JavaFX ObservableList + Fenster AWT, Swing, JavaFX & SWT 6
windl Transparentes / halbtransparentes Fenster AWT, Swing, JavaFX & SWT 1
K Fenster mittig im Vollbildschirm - ok, aber ... AWT, Swing, JavaFX & SWT 2
N Swing Sorry nicht mal ein Fenster öffnen... AWT, Swing, JavaFX & SWT 19
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
G Event Handling TableView daten in ein neues Fenster herauslesen? AWT, Swing, JavaFX & SWT 3
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
C Durch klicken von Button neues Fenster oeffnen AWT, Swing, JavaFX & SWT 18
D JavaFX (WebStart) Graues Fenster beim Start AWT, Swing, JavaFX & SWT 4
J Button vergrößert sich bei Fenster resize AWT, Swing, JavaFX & SWT 22
L Zweites Fenster mit Thread AWT, Swing, JavaFX & SWT 0
Paul15 Zwei Fenster AWT, Swing, JavaFX & SWT 23
T LayoutManager Methode, um Bildschirm(fenster) für Aktualisierungen zu blockieren bzw. freizugeben gesucht AWT, Swing, JavaFX & SWT 2
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
L Daten in neuem Fenster AWT, Swing, JavaFX & SWT 2
D Mit Klick auf Button ein neues Fenster erzeugen AWT, Swing, JavaFX & SWT 11
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
A Swing Textübergabe innerhalb der Anwendung in unterschiedlichen Fenster AWT, Swing, JavaFX & SWT 8
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
K Java Button öffnet neues Fenster AWT, Swing, JavaFX & SWT 5
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben