<AWT Dev> enableInputMethod(false) does not work in the TextArea and TextField on the linux platform

Anthony Petrov anthony.petrov at oracle.com
Tue Feb 7 03:29:32 PST 2012


Hi Charles,

The general idea of the fix is OK and the fix looks fine to me.

However, there's still a problem if an app enables or disables Input 
Methods dynamically during the app's execution. The updated status of 
the property needs to be propagated to the jtext or xtext somehow.

--
best regards,
Anthony

On 2/7/2012 1:17 PM, Charles Lee wrote:
> Hi guys,
> 
> Given a simple test case below[1], enableInputMethod(false) does not 
> work. We can always invoke input method.
> [1]
> public class MyAWTTest extends JFrame {
>     Component c;
> 
>     public MyAWTTest() {
>     super("Single Frame --- AWT Frame");
> 
>     setLayout(new FlowLayout());
> 
>     c = new TextArea("TextArea component(No IM)");
>     c.enableInputMethods(false);
>     c.setPreferredSize(new Dimension(400, 100));
>     add(c);
> 
>     c = new TextField("TextField component(No IM)", 52);
>     c.enableInputMethods(false);
>     add(c);
> 
>     setSize(850, 360);
>     setVisible(true);
> 
>     setDefaultCloseOperation(EXIT_ON_CLOSE);
>     }
> 
>     public static void main(String[] args) {
>     SwingUtilities.invokeLater(new Runnable() {
>         public void run() {
>         new MyAWTTest();
>         }
>     });
> 
>     }
> }
> 
> Patch @ http://cr.openjdk.java.net/~littlee/OJDK-124/webrev.00/ 
> <http://cr.openjdk.java.net/%7Elittlee/OJDK-124/webrev.00/>
> 
> The patch is mainly about:
> 1. Add a new method in the ComponentAccessor which help to escape the 
> package restraints. Please check the changes in Component and AWTAccessor.
> 2. Remove the enableInputMethod(true) in the XTextAreaPeer and 
> XTextFieldPeer and use areInputMethodEnabled to set jtext correctly. 
> Please check the changes in XTextAreaPeer and XTextFieldPeer.
> 
> I know it may not be a beautiful fix, but anyone interests in it?
> 



More information about the awt-dev mailing list