MacのJavaは日本語環境を考慮してない?

まあ、ちょっとこんなコードを書いたと思ってください。はてなの仕様上インデントされてません)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Swing_Test1 extends JFrame{
     private JTextField inputField = new JTextField(20);
     private JLabel testLabel = new JLabel();
     {
          setLayout(new FlowLayout());
          inputField.addKeyListener(new keyListener());
          add(inputField);
          add(testLabel);
          testLabel.setText(String.valueOf(inputField.getText().length()));
     }
     public void windowClosing(WindowEvent e) {
          System.exit(0);
     }
     class keyListener extends KeyAdapter{
          public void keyReleased(KeyEvent e){
              testLabel.setText(String.valueOf(inputField.getText().length()));	
          }
     }
     public static void main(String  [] args){
          Swing_Test1 f = new Swing_Test1();
          f.setTitle("JFrameTest");
          f.setSize(300, 100);
          f.setVisible(true);
     }
}

これはつまりこういう風なウィンドウを出すモノなんです。入力域(JTextField)に文字が入力されると、その入力された文字数が表示されるという。

で、これの動きがですね・・・と、その前に、これをAWTで動かした時(リスト中の「J」を取ったヤツねw)の挙動をまずご紹介しましょう。

Windows
IM-OFF時:1文字入力する度に文字数が表示される
IM-ON時:文字入力→変換確定のEnterで文字数が表示される


Mac
IM-OFF時:1文字入力する度に文字数が表示される
IM-ON時:文字入力で文字数が表示され、勝手に確定する。つまりIM入力状態がキャンセルされる。(漢字変換ができない)*1

ね、この時点であんまりでしょう。

じゃあ今回のSwingではどうなるかと言うと、

Windows
IM-OFF時:1文字入力する度に文字数が表示される
IM-ON時:1文字入力する度に文字数が表示され、変換確定のEnterで文字数が再表示される


Mac
IM-OFF時:1文字入力する度に文字数が表示される
IM-ON時:文字入力しても変換確定しても文字数が表示されない

と、Windowsでは理想的な動作をする一方で、Macの方では輪をかけて酷い結果に。

MacでIM働かせると、AWTでは敏感すぎて(?)、Swingでは鈍すぎるんです。どの位鈍いかと言うと、IMでの文字入力、及び変換確定のReturnではKeyReleasedが発生しないって位鈍いorz


ひょっとしてAppleって日本語環境でのJavaのテストしてない?それともこれは何か回避方法があるんでしょうかね?

*1:KeyReleasedに処理を入れ込むとおかしくなるみたい