質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

623閲覧

JavaFXのSwingNodeでのJTextPaneで日本語入力できない

duffy

総合スコア8

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/05/07 11:44

JavaFXのSwingNodeでJTextPaneを出して日本語入力しても日本語入力できなくて困っています。ちなみにJTextPaneだけではなくJTextAreaなどでもダメでした。何か解決方法はないでしょうか?

コントローラークラス

java

1package swingtest; 2 3import java.awt.Dimension; 4import java.net.URL; 5import java.util.ResourceBundle; 6import javafx.embed.swing.SwingNode; 7import javafx.event.ActionEvent; 8import javafx.fxml.FXML; 9import javafx.fxml.Initializable; 10import javafx.scene.control.Label; 11import javax.swing.JTextPane; 12 13 14public class FXMLDocumentController implements Initializable { 15 16 @FXML 17 private SwingNode swingnode; 18 19 @Override 20 public void initialize(URL url, ResourceBundle rb) { 21 // TODO 22 JTextPane textPane = new JTextPane(); 23 textPane.setPreferredSize(new Dimension(300, 100)); 24 25 swingnode.setContent(textPane); 26 textPane.setText("あいうえお"); 27 } 28 29} 30

xml

1 2<?xml version="1.0" encoding="UTF-8"?> 3 4<?import javafx.embed.swing.SwingNode?> 5<?import javafx.scene.layout.AnchorPane?> 6 7<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.141" fx:controller="swingtest.FXMLDocumentController"> 8 <children> 9 <SwingNode fx:id="swingnode" /> 10 </children> 11</AnchorPane> 12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

追記:回答コメントいただいたので追記します。

WISYWIGエディター的なものの実装とのことです。確かにJTextPaneだと(低水準ではあるが)そこそこの手数でスタイル付きのエディターは作れる印象です。JavaFXではHTMLEditorがありますが

https://docs.oracle.com/javafx/2/ui_controls/editor.htm

こういうサンプルを見るとこれをそのまま使うならお手軽なものの・・・

文字のスタイルを変更するボタン的なものにアクセスできない

「プログラムから簡単にアクセスできない」or「カスタマイズできなさそう」ということだろうと思います。それは確かかも知れません。アマチュア的感覚でハックできないかなと考えたりしますがあまりよい考えとは言えなさそうです。ちょっと外れますがJavaFXにはSwingにあるTitiledBorderがないのですが、標準にはないものの探せば見つかります。そこで別の方法としてどこかに部品がないか探してみますと

https://stackoverflow.com/questions/26214846/javafx-rich-text-editor
=>
https://github.com/FXMisc/RichTextFX

こういうのを見つけました。質問者さんの目的に合うものかどうかは不明ですが調べてみてはいかがでしょう?


回答でなくてすみません。気になるのでうかがいます。

JavaFXを利用しているのにあえてSwingコンポーネントを使う理由はなんでしょう?SwingをJavaFX上で使うのはちょっとややこしいと思います。例えばSwingコンポーネントの状態変更はJavaFX applicationスレッドでは行えなくて一々SwingUtilities.invokeLaterとかを使わないといけないなんて記事を見た気がします。

もし特に理由がないのでしたら普通に全てをJavaFXのノードで作成した方がよいと思います。swingを使う理由があるのでしたら本コメントはスルーしてください。

投稿2018/05/07 13:34

編集2018/05/26 12:07
KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

duffy

2018/05/26 10:23

特別な理由があるので、スルーしようと思ったのですが聞きたいことがあるので質問します。 JTextAreaのように文字の大きさや色を変えたりできるテキストエリア的なものを使いたくて、JavaFXのもので使えないか考えて、HTMLEditorを検討したのですがHTMLEditorでは文字のスタイルを変更するボタン的なものにアクセスできないようなので諦めました。ですがSwingならできそうだったのでSwingNodeを使ってやろうとしたらなぜか日本語入力ができませんでした。 https://www.javadrive.jp/tutorial/appli_word/index2.html ここで紹介されているサンプルはできたのですが、SwingNodeでやると日本語入力ができないんです。 Swingを使わずに実現できる良い方法はないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問