我有这段代码,只需将 HTML
文件从资源加载到 JavaFX javafx.scene.web.WebView
即可:
import java.awt.Dimension;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javax.swing.JFrame;
public class Test extends Application {
JFXPanel panel;
JFrame frame;
@Override
public void start(Stage primaryStage) {
Platform.runLater(new Runnable() {
public void run() {
frame = new JFrame("Test");
WebView v = new WebView();
v.getEngine().load(getClass().getResource("htmlfile.html").toExternalForm());
StackPane root = new StackPane();
root.getChildren().add(v);
Scene scene = new Scene(root);
panel = new JFXPanel();
panel.setScene(scene);
panel.setPreferredSize(new Dimension(641, 725));
frame.setContentPane(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}
});
}
/**
* main method
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
htmlfile.html
是这样的:
<html>
<head>
<link rel="stylesheet" href="style.css">
</head>
<body>
<textarea id="mytextarea"></textarea>
</body>
</html>
一切都显示正确,唯一的问题是,如果我在 WebView
中显示的文本区域中键入内容,它不会将 ENTER
键识别为换行符。所以事实上,当我按 ENTER
时,textarea
不执行任何操作。现在,如果您在浏览器(例如 chrome 或 firefox)中尝试上面的 HTML,它将可以工作。
为什么会发生这种情况?
如何解决?
最佳答案
我们在使用 JavaFX HTMLEditor
(内部使用 WebView
)的 Swing 应用程序中遇到了完全相同的问题。
这个answer帮助我解决了这个问题。正如另一个答案所说,这是 JavaFX 中的一个已知错误。
关于java - HTML 文本区域无法将 "enter"键识别为 WebView 中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969367/