JTextField в JFRAME невозможна при использовании JCEF в JinternalFrame, пока JFRAME не потеряет фокусJAVA

Программисты JAVA общаются здесь
Anonymous
JTextField в JFRAME невозможна при использовании JCEF в JinternalFrame, пока JFRAME не потеряет фокус

Сообщение Anonymous »

Я начал реализовывать JCEF в своем проекте, и я инициализации встроенного браузера в JinternalFrame внутри jframe , наряду с серией полей формы на jpanel рядом с JinternalFrame . Компонент браузера не полностью инициализируется до тех пор, пока JFRAME фактически не станет видимым, и я обнаружил, что мой JTextfield не станет невыразительным, если JFRAME не теряет и не восстанавливает фокус. Это происходит только при использовании JinternalFrame с компонентом JCEF ...
это также происходит каждый раз, когда я вызываю LoadUrl , чтобы загрузить новую страницу в браузере: JTextField снова становятся неоплачиваемыми, пока я не потеряю/набег в jframe . /> update < /strong>:
Я нашел взлом, который позволяет JTextfield < /code> S снова стать редактируемым, но я бы не назвал его решением, потому что это не очень элегантно. Я добавил обработчик загрузки в экземпляр CefClient (client.addloadhandler (new CefloadhandlerAdapter ()) ) с помощью @ovveride на методе OnloadingStateChange , который, в свою очередь, дает доступ к текущему компоненту браузера. Оттуда я могу обнаружить при завершении загрузки в браузере, и использовать SwingUtilities, чтобы получить окно, в котором находится компонент браузера. Затем я setVisible (false) и setVisible (true) в этом окне. Я говорю, что это не решение, потому что каждый раз, когда браузер готов загружать окно исчезает и появляется. Несмотря на то, что JTextfield снова редактируется, довольно некрасиво видеть, как окно мигает. Я попробовал все виды revalidate () и repaint () методы безрезультатно, если только я не назвал их правильно ...

Код: Выделить всё

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);
}
}
});
Если кто -то может предложить лучшее решение, пожалуйста!


Подробнее здесь: https://stackoverflow.com/questions/646 ... l-jframe-l

Вернуться в «JAVA»