- PR -

MacOSのJTextFieldで連文節変換中の文字化け

1
投稿者投稿内容
さく
会議室デビュー日: 2004/09/01
投稿数: 13
投稿日時: 2004-10-22 17:44
MacOS X 10.3.5の
$ java -version
java version "1.4.2_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-141.3)
Java Hotspot(TM) Client VM (build 1.4.2-38, mixed mode)

で以下のプログラムを実行して、テキストフィールド上で、ことえりを使用して日本語のかな→連文節変換を行うと、文字化けになります。どうやったら直るでしょうか?

コード:
import javax.swing.*;

public class TextTest {
	public static void main(String[] args) {
		JFrame f = new JFrame("Text Test");
		JTextField tf = new JTextField(20);
		f.getContentPane().add(tf);
		f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		f.pack();
		f.setVisible(true);
	}
}


症状としては、
あくたがわりゅうのすけ
のようにローマ字かな変換でタイプした分には問題ないのですが、
[変換操作]
で、アラビア文字とおぼしき数文字表示に化けます。

加えて、これはさほど重大ではありませんが、未変換かな文字列に付く下線の長さもいくぶん短く、文字幅に足りていないようです。

単文節で変換(あくたがわ[変換操作]りゅうのすけ[変換操作])していくと化けないようですが、連文節で変換すると化けます。また、連文節変換でも、化けるのは変換中のテキストのみで、候補一覧中の候補や確定したテキストは化けません。

なお、AWTで類似プログラム(Jを取るとかgetContentPaneを省くとか)を作ったところ、連文節変換をしても化けませんでした。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-10-22 18:00
手元の環境で試したところ文字列の入力中に例外が出力されて入力を完了することが出来ませんでした。
IM は ATOK17 でOS/JVMのバージョンは同じです。
なんだか不安定ですね。
コード:
$ java TextTest
Exception in thread "AWT-AppKit" java.lang.IllegalArgumentException: Invalid substring range
        at java.text.AttributedString$AttributedStringIterator.<init>(AttributedString.java:717)
        at java.text.AttributedString.getIterator(AttributedString.java:544)
        at apple.awt.CInputMethod.attributedSubstringFromRange(CInputMethod.java:532)
JavaAWT: Assertion failure: Java exception thrown
JavaAWT: File src/macosx/native/apple/awt/util/AWTException.m; Line 40
JavaAWT: Assertion failure: _javaException
JavaAWT: File src/macosx/native/apple/awt/util/AWTException.m; Line 48
2004-10-22 17:53:22.111 java[9982] Apple AWT Startup Exception : See Java exception object
2004-10-22 17:53:22.113 java[9982] Apple AWT Restarting Native Event Thread
yngwiepb:~ yusukey$ java TextTest
Exception in thread "AWT-AppKit" java.lang.IllegalArgumentException: Invalid range
        at javax.swing.text.JTextComponent$InputMethodRequestsHandler.getCommittedText(JTextComponent.java:3340)
        at sun.awt.im.InputMethodContext.getCommittedText(InputMethodContext.java:260)
        at apple.awt.CInputMethod.attributedSubstringFromRange(CInputMethod.java:530)
JavaAWT: Assertion failure: Java exception thrown
JavaAWT: File src/macosx/native/apple/awt/util/AWTException.m; Line 40
JavaAWT: Assertion failure: _javaException
JavaAWT: File src/macosx/native/apple/awt/util/AWTException.m; Line 48
2004-10-22 17:57:36.400 java[9983] Apple AWT Startup Exception : See Java exception object
2004-10-22 17:57:36.400 java[9983] Apple AWT Restarting Native Event Thread


さく
会議室デビュー日: 2004/09/01
投稿数: 13
投稿日時: 2004-10-25 11:35
引用:

インギさんの書き込み (2004-10-22 18:00) より:
手元の環境で試したところ文字列の入力中に例外が出力されて入力を完了することが出来ませんでした。
IM は ATOK17 でOS/JVMのバージョンは同じです。
なんだか不安定ですね。



こちらでもATOK17環境があったので動かしてみたのですが、
変換は完了して確定する(変換中はことえりと同じ化け方をする)ことは出来ましたが、
終了してみたらコンソールに同じ例外が出ていました。
Appleのほうには検索してみても同様の症例は見あたらないのですが、ひょっとしたら
問題として気づいていないのかな。問い合わせてみた方がよさそうです。
さく
会議室デビュー日: 2004/09/01
投稿数: 13
投稿日時: 2004-10-25 11:38
引用:

さくさんの書き込み (2004-10-25 11:35) より:
こちらでもATOK17環境があったので動かしてみたのですが、


間違えました。ATOK16でした。
1

スキルアップ/キャリアアップ(JOB@IT)