我正在使用JavaFX 8制作applet(通过JFXPanel
)并计划使用Popup
来显示其中包含TextField
的区域。这可以按预期工作,直到应用程序失去焦点。在那之后,我无法重新获得TextField
重新获得焦点,因此您无法再输入它。我尝试在requestFocus()
上拨打TextField
,但似乎没有做任何事情。问题可以在下面的简单示例中看到:
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.stage.Popup;
import javax.swing.*;
public class FXApplet extends JApplet {
protected Scene scene;
protected Group root;
@Override
public final void init() {
SwingUtilities.invokeLater(() -> initSwing());
}
private void initSwing() {
JFXPanel fxPanel = new JFXPanel();
add(fxPanel);
Platform.runLater(() -> {
initFX(fxPanel);
initApplet();
});
}
private void initFX(JFXPanel fxPanel) {
root = new Group();
scene = new Scene(root);
fxPanel.setScene(scene);
}
public void initApplet() {
Popup popup = new Popup();
popup.setAutoHide(false);
popup.getContent().add(new TextField());
popup.show(scene.getWindow());
}
}