JTextField in JFrame Uneditable, wenn JCEF in JinternalFrame verwendet wird, bis JFrame den Fokus verliertJava

Java-Forum
Anonymous
 JTextField in JFrame Uneditable, wenn JCEF in JinternalFrame verwendet wird, bis JFrame den Fokus verliert

Post by Anonymous »

Ich habe begonnen, JCEF in einem mir zu implementieren, und ich initialisiert den eingebetteten Browser in einem JinternalFrame innerhalb eines JFrame neben einer Reihe von Formfeldern auf einem JPanel neben dem JinternalFrame . Die Browserkomponente initialisiert nicht vollständig, wenn der JFrame tatsächlich sichtbar wird, und ich stelle fest, dass mein JTextField nicht ausgewiesen ist, es sei denn, der JFrame verliert und erwidert den Fokus. Dies geschieht nur, wenn ein JinternalFrame mit der JCEF -Komponente verwendet wird ...
Es passiert auch jedes Mal, wenn ich Loadurl aufrufe, um eine neue Seite im Browser zu laden: Das JTextField wird wieder eineditabel, bis ich im JFRame . /> Update < /strong>:
Ich habe einen Hack gefunden, mit dem das JTextField < /code> wieder bearbeitetbar wird, aber ich würde es nicht als Lösung bezeichnen, weil es nicht sehr elegant ist. Ich habe der CEFClient -Instanz (client.addloadHandler (neuer cefloadHandlerAdapter ()) ) mit einem @ovveride in der OnLoadingStatechange -Methode einen Zugriff auf die aktuelle Browserkomponente hinzugefügt. Von dort aus kann ich beim Laden des Browsers erkennen, und verwenden Sie SwingUtilities, um das Fenster zu erhalten, in dem sich die Browserkomponente befindet. Dann setze ich auf diesem Fenster ein (falsch) und setvisible (true) . Ich sage, es ist keine Lösung, denn jedes Mal, wenn der Browser das Laden des Fensters verschwindet und wieder auftaucht. Obwohl die JTextField wieder bearbeitet werden können, ist es ziemlich hässlich zu sehen, wie das Fenster blinkt. Ich habe alle Arten von revalidate () und repaint () methodien ohne Verfügbarkeit ausprobiert, es sei denn

Code: Select all

client.addLoadHandler(new CefLoadHandlerAdapter() {
@Override
public void onLoadingStateChange(CefBrowser browser, boolean isLoading,
boolean canGoBack, boolean canGoForward) {
if (!isLoading) {
//browser_ready = true;
System.out.println("Browser has finished loading!");
SwingUtilities.windowForComponent( browser.getUIComponent() ).setVisible(false);
SwingUtilities.windowForComponent( browser.getUIComponent() ).setVisible(true);
}
}
});
Wenn jemand eine bessere Lösung vorschlagen kann, bitte tun Sie!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post