Wenn ich auf die Schaltfläche klicke, wird eine weitere JFrame-Klasse geöffnet. Der JFrame wird nach 2 Sekunden auf dem Bildschirm angezeigt, aber das isVisible gibt vorher True zurück. Ich möchte den Timer starten, wenn der JFrame tatsächlich auf dem Bildschirm angezeigt wird. Wie kann ich das erreichen? Ich habe versucht, isShowing() und isDisplayable() zu verwenden, aber es gibt nicht das erwartete Ergebnis.Wie stellt man sicher, dass die Benutzeroberfläche von Swing tatsächlich auf dem Bildschirm angezeigt wird?
1
A
Antwort
0
Man könnte so etwas wie folgt verwenden:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class MainApp {
JFrame frame = new JFrame("Main");
JButton button = new JButton("Toggle auxiliary");
JFrame auxFrame = new JFrame("Auxiliary");
public MainApp() {
button.addActionListener(evt -> {
// Delay displaying for 2 seconds
Timer timer = new Timer(2000, event -> {
auxFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
auxFrame.setSize(320, 240);
auxFrame.setVisible(true);
});
timer.start();
auxFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
// Stop timer after the auxiliary frame is displayed
timer.stop();
}
});
});
frame.add(button);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(320, 240);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(MainApp::new);
}
}
Verwandte Themen
- 1. Positionselement, aber stellen Sie sicher, dass es immer noch auf dem Bildschirm angezeigt wird
- 2. Wie stellt die JVM sicher, dass sich System.identityHashCode() niemals ändert?
- 3. Java Graphics Font - Wie stellt man sicher, dass der Text in einer Zeile gehalten wird?
- 4. Warum wird die hinzugefügte Ansicht nicht auf dem Bildschirm angezeigt?
- 5. WKWebView Benachrichtigung, wenn die Ansicht tatsächlich angezeigt wird
- 6. Wie stellt man sicher, dass diese Methode nur einmal und nur aus einem Thread ausgeführt wird?
- 7. Rendern von Kacheln, die auf dem Bildschirm angezeigt werden
- 8. Chrome Alert/Eingabeaufforderung wird auf dem Bildschirm angezeigt
- 9. Text wird auf dem Bildschirm angezeigt wie in Jetzt tippen?
- 10. JQuery-Multiple-Choice-Quizskript: Wie stellt man sicher, dass die richtige Antwort verfügbar ist?
- 11. Wie Java Swing auf X11 angezeigt wird, wenn auf dem Mac ausgeführt wird
- 12. Android Virtual Device wird nicht auf dem Bildschirm angezeigt
- 13. Was ist die 'Klasse' in Swing-Benutzeroberfläche?
- 14. MoveToElement wenn Element nur auf dem Bildschirm angezeigt wird
- 15. Prüfen, ob eine Zeile auf dem Bildschirm angezeigt wird, bevor er zum Bildlauf gezwungen wird?
- 16. Java Swing-GUI, die nicht in Xmonad angezeigt wird
- 17. Flash-Datei wird nicht auf dem Bildschirm angezeigt?
- 18. Swing: Programmatische Änderung der Benutzeroberfläche ohne Auslösen von Rückrufen
- 19. JPA Hibernate Spring Repository stellt sicher, dass die Transaktion beim Speichern abgeschlossen wird?
- 20. Swing-Popup befindet sich unten rechts auf dem Windows-Bildschirm
- 21. Wie stellt man sicher, dass das Visual Studio Online Git Repository privat ist?
- 22. ClientWebSocket stellt sicher, dass die Nachricht gesendet wurde und die Verbindung besteht
- 23. Angular Material: Wie wird ein Toast angezeigt, nachdem ein anderer angezeigt wird, während beide auf dem Bildschirm bleiben?
- 24. NSAlert wird angezeigt, während NSMenu geöffnet ist, bewirkt, dass die Benutzeroberfläche einfriert
- 25. Warum kann die Taste nicht auf dem Bildschirm angezeigt werden?
- 26. Wie Swing tatsächlich natives Fenster von HeavyWeight Ancestor in Codestufe
- 27. Wie implementiert man eine scrollbare Registerkarte auf dem unteren Bildschirm
- 28. Log4J; Wie stellt man sicher, dass Zeitstempel immer in GMT mit ConversionPattern sind?
- 29. Wie wird angezeigt, dass beim Klicken auf die Schaltfläche eines anderen Dialogfelds ein Dialogfeld angezeigt wird?
- 30. Wie wird cardView bei der Verwendung von RecyclerView auf dem Bildschirm angezeigt?
2s lang scheint ein JFrame angezeigt werden, wahrscheinlich macht es nicht mehr reagiert aussehen. Vielleicht sollten Sie die Art und Weise ändern, wie Sie Ihren Frame und seinen Inhalt initialisieren, anstatt darauf zu warten, dass er angezeigt wird – jhamon
Sie müssen einen Listener an Ihren JFrame anhängen, der ausgelöst wird, wenn Ihr JFrame angezeigt wird. Wie bei [WindowListener] (https://docs.oracle.com/javase/7/docs/api/java/awt/event/WindowListener.html#windowOpened (java.awt.event.WindowEvent)) –
stimme ich @jhamon zu . Ich hoffe, du versuchst nicht, einen möglichen Konstruktionsfehler zu umgehen. – byxor