rt
Swing 程序,怎样把那个浮动窗口隐藏?
(客户端的rt包动不了)

解决方案 »

  1.   

    那应该是输入法的,或许这是java的一个小问题,别管它了,要不你改其它的,比如SWT开发
      

  2.   


    不是输入法的,,,只要一输入中文,就会有一个多余的浮动窗口
    不知大家注意到没,,在JTextArea里输入中文试试就知道了,很讨厌的东东……
      

  3.   

    这个小窗口是JAVA为了适应各个国家的语言输入做的一个东西。
    反正是看着不爽。而且在使用智能拼音这类输入法时,输入过多的字符,会引发虚拟机的崩溃。楼主可以亲自试试。
    而且这个东西跟jdk,jre的版本有关系,某些jdk,jre版本在使用过程中就不会出现,某些会出现。你可以选择使用awt,这样就不会有那个输入窗口。
    然后你也可以这么试试public class MyTextField extends  javax.swing.JTextField {
        public InputMethodRequests getInputMethodRequests() {
            return null;  
        }
    }
    这样也是会隐藏起来。
    但是这样做,不能确定会不会对你的程序带来什么?比如不稳定或是其他什么问题。所以使用起来需要谨慎。
      

  4.   

    /*
     * 以下方法用于解决java中输入法出现多余的输入窗口问题
     * 
     * 方法1  在命令行中加入参数
     * java -Djava.awt.im.style=no-spot 这样不需要改程序,是个比较完善的解决方法。
     * 
     * 方法2  直接设置系统参数
     * System.setProperty( "java.awt.im.style", "no-spot" );
     * 
     * 方法3通过反射修改类的static 字段
     * try {
     * Class iClass = Class.forName("sun.awt.im.InputMethodContext");
     *
     * Field field = iClass.getDeclaredField("belowTheSpotInputRequested");
     * AccessibleObject.setAccessible(new AccessibleObject[] { field }, true);
     *         field.setBoolean(null, false);
     * } catch (SecurityException e) {
     * e.printStackTrace();
     * } catch (NoSuchFieldException e) {
     * e.printStackTrace();
     * } catch (ClassNotFoundException e) {
     * e.printStackTrace();
     * } catch (IllegalArgumentException e) {
     * e.printStackTrace();
     * } catch (IllegalAccessException e) {
     * e.printStackTrace();
     * }
     * 
     */