ああJavaFX - HTMLEditorを使う 2012/11/28

JavaFXです。
HTMLEditorを使うです。

さわりはじめて一週間ぐらいなのですが、だんだんこれが主流になるんだろうなというふうに感じはじめています。SceneBuilderもいい感じですね。

まあやはりというか、何かひっかかることがでてきたりもしてます。
既知の問題なのかもしれませんが、とりあえず、記録としてメモします。
でなにかというと、HTMLEditorどうも、swing経由で使うのと、JavaFXだけで使うのでは、何か動きが違うようですね。

ためしたのはmac osxでJava7 JavaFX 2.2.3です。
※windows版でもにたようなものかもしれません。

swingにのっけるとIMEのうごきが違うというのと、改行をうけつけてくれなかったりしました。

まずJavaFXのみの実装は以下
これは問題なかったです。

import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.scene.web.HTMLEditor; import javafx.stage.Stage; public class HTMLEditorSample_JavaFXOnly extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { stage.setTitle("HTMLEditorのサンプルだよ。JavaFXのみ"); Pane root = new Pane(); Scene scene = new Scene(root, 500, 500); HTMLEditor htmlEditor = new HTMLEditor(); root.getChildren().add(htmlEditor); stage.setScene(scene); stage.show(); } }
これで、enterキーも受け入れるし、IMEもきちんとよばれて?使えて日本語入力もおこなえました。

つぎにswingにjavafxをのっける版です。

import javafx.application.Platform; import javafx.embed.swing.JFXPanel; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.web.HTMLEditor; import javax.swing.JFrame; import javax.swing.SwingUtilities; public class HTMLEditor_swingAndJavaFX { private static void initAndShowGUI() { JFrame frame = new JFrame("Swing and JavaFX"); final JFXPanel fxPanel = new JFXPanel(); frame.add(fxPanel); frame.setSize(500, 500); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Platform.runLater(new Runnable() { @Override public void run() { initFX(fxPanel); } }); } private static void initFX(JFXPanel fxPanel) { Scene scene = createScene(); fxPanel.setScene(scene); } private static Scene createScene() { Group root = new Group(); Scene scene = new Scene(root, Color.ALICEBLUE); HTMLEditor htmlEditor = new HTMLEditor(); root.getChildren().add(htmlEditor); return (scene); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { initAndShowGUI(); } }); } }
上記のコードですとどうも、enterキーで改行できないのと、IMEで日本語を入力できなかったです。

はじめ、swingのうえにのっけてうごかしていて、HTMLEditorに幻滅しかけていたところ、ensembleで動きをチェックしたところ、問題なさそうだったので、ああ、そういうことかとわかった感じなのですが、どこをどうしたらどうなるのかが皆目わからない状態なのでした。

今日のところはこれまで。






: