-
Bug
-
Resolution: Unresolved
-
P5
-
7
-
generic
-
linux
Compile and run the test code test.java.
1. On Linux (SLES11), if set locale utf8 (e.g th_TH.utf8), the corresponding input method can be loaded; but one is unable to input with that IM.
2. On Linux (SLES11), if set locale non utf8 (e.g th_TH), the corresponding input method can be loaded and used. - This is the expected result.
3. On Solaris (10), if set locale utf8 (e.g. th_TH.UTF-8), the corresponding input method can not be loaded.
4. On Solaris (10), if set locale non utf8 (e.g. th_TH), the corresponding input method sometimes can be loaded, and sometimes not. Exception sometimes occurs and sometimes not.
* It works ok on Windows(xp).
----------- test.java -------------
import java.awt.*;
import javax.swing.*;
import java.io.File;
import java.awt.event.*;
import java.util.Locale;
public class test {
public static void main(String[] s) {
T();
}
private static void T() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
final JTextArea field = new JTextArea(10, 20);
field.setFont(new Font("Dialog", Font.PLAIN, 24));
panel.add(field, BorderLayout.CENTER);
frame.getContentPane().add(panel);
frame.setVisible(true);
field.setLineWrap(true);
field.requestFocus();
// Locale locale = new Locale("zh", "CN");
Locale locale = new Locale("th", "TH");
// Locale locale = new Locale("ja", "JP");
boolean isInputContextSet = field.getInputContext().selectInputMethod(locale);
System.out.println("inputmethod: " + locale.toString() + " " + isInputContextSet);
}
}
------------------ Exception sometimes occurs on Solaris ------------------
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.text.WrappedPlainView$WrappedLine.paint(WrappedPlainView.java:580)
at javax.swing.text.BoxView.paintChild(BoxView.java:161)
at javax.swing.text.BoxView.paint(BoxView.java:433)
at javax.swing.text.WrappedPlainView.paint(WrappedPlainView.java:369)
at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1436)
at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:739)
at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:883)
at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:862)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5228)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent.paint(JComponent.java:1040)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1967)
at java.awt.Window.paint(Window.java:3867)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:781)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
The native input method still can't be loaded after using suggested method. Expected behavior is that, take Thai on Solaris (10) for instance, set the locale th_TH.UTF-8, run the program, Thai IM should be loaded, and one should be able to input Thai characters into the JTextArea immediately without any additional operations beforehand. Hope this clarifies the problem.
1. On Linux (SLES11), if set locale utf8 (e.g th_TH.utf8), the corresponding input method can be loaded; but one is unable to input with that IM.
2. On Linux (SLES11), if set locale non utf8 (e.g th_TH), the corresponding input method can be loaded and used. - This is the expected result.
3. On Solaris (10), if set locale utf8 (e.g. th_TH.UTF-8), the corresponding input method can not be loaded.
4. On Solaris (10), if set locale non utf8 (e.g. th_TH), the corresponding input method sometimes can be loaded, and sometimes not. Exception sometimes occurs and sometimes not.
* It works ok on Windows(xp).
----------- test.java -------------
import java.awt.*;
import javax.swing.*;
import java.io.File;
import java.awt.event.*;
import java.util.Locale;
public class test {
public static void main(String[] s) {
T();
}
private static void T() {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
final JTextArea field = new JTextArea(10, 20);
field.setFont(new Font("Dialog", Font.PLAIN, 24));
panel.add(field, BorderLayout.CENTER);
frame.getContentPane().add(panel);
frame.setVisible(true);
field.setLineWrap(true);
field.requestFocus();
// Locale locale = new Locale("zh", "CN");
Locale locale = new Locale("th", "TH");
// Locale locale = new Locale("ja", "JP");
boolean isInputContextSet = field.getInputContext().selectInputMethod(locale);
System.out.println("inputmethod: " + locale.toString() + " " + isInputContextSet);
}
}
------------------ Exception sometimes occurs on Solaris ------------------
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.text.WrappedPlainView$WrappedLine.paint(WrappedPlainView.java:580)
at javax.swing.text.BoxView.paintChild(BoxView.java:161)
at javax.swing.text.BoxView.paint(BoxView.java:433)
at javax.swing.text.WrappedPlainView.paint(WrappedPlainView.java:369)
at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1436)
at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:739)
at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:883)
at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:862)
at javax.swing.JComponent.paintComponent(JComponent.java:778)
at javax.swing.JComponent.paint(JComponent.java:1054)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paint(JComponent.java:1063)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
at javax.swing.JComponent.paintChildren(JComponent.java:887)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5228)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:295)
at javax.swing.RepaintManager.paint(RepaintManager.java:1206)
at javax.swing.JComponent.paint(JComponent.java:1040)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
at java.awt.Container.paint(Container.java:1967)
at java.awt.Window.paint(Window.java:3867)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:781)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
at javax.swing.RepaintManager.access$700(RepaintManager.java:59)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
The native input method still can't be loaded after using suggested method. Expected behavior is that, take Thai on Solaris (10) for instance, set the locale th_TH.UTF-8, run the program, Thai IM should be loaded, and one should be able to input Thai characters into the JTextArea immediately without any additional operations beforehand. Hope this clarifies the problem.