使用AlloyLookAndFeel后,再设置所有新JFrame都用当前外观为其提供 Window 装饰,然后在JTextField中输入中文时就会抛出好多异常,具体见下面。但是去掉JFrame.setDefaultLookAndFeelDecorated(true);或者参数改为false后就没问题,为什么?
异常如下:
----------------------------------------------------------------------------------
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:336)
at javax.swing.KeyboardManager.registerMenuBar(KeyboardManager.java:263)
at javax.swing.JMenuBar.addNotify(JMenuBar.java:679)
at java.awt.Container.addNotify(Container.java:2500)
at javax.swing.JComponent.addNotify(JComponent.java:4469)
at java.awt.Container.addImpl(Container.java:1052)
at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:204)
at java.awt.Container.add(Container.java:899)
at com.incors.plaf.alloy.AlloyRootPaneUI.addTitlePane(Unknown Source)
at com.incors.plaf.alloy.AlloyRootPaneUI.installWindowDecoration(Unknown
Source)
at com.incors.plaf.alloy.AlloyRootPaneUI.propertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSup
port.java:333)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSup
port.java:270)
at java.awt.Component.firePropertyChange(Component.java:7159)
at javax.swing.JComponent.addNotify(JComponent.java:4470)
at javax.swing.JRootPane.addNotify(JRootPane.java:680)
at java.awt.Container.addNotify(Container.java:2500)
at java.awt.Window.addNotify(Window.java:466)
at java.awt.Frame.addNotify(Frame.java:501)
at java.awt.Window.pack(Window.java:484)
at sun.awt.im.CompositionArea.<init>(CompositionArea.java:71)
at sun.awt.im.CompositionAreaHandler.createCompositionArea(CompositionAr
eaHandler.java:56)
at sun.awt.im.CompositionAreaHandler.inputMethodTextChanged(CompositionA
reaHandler.java:169)
at sun.awt.im.CompositionAreaHandler.processInputMethodEvent(Composition
AreaHandler.java:144)
at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:1
75)
at java.awt.Component.dispatchEventImpl(Component.java:3902)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
------------------------------------------------------------------------------------------
异常如下:
----------------------------------------------------------------------------------
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:336)
at javax.swing.KeyboardManager.registerMenuBar(KeyboardManager.java:263)
at javax.swing.JMenuBar.addNotify(JMenuBar.java:679)
at java.awt.Container.addNotify(Container.java:2500)
at javax.swing.JComponent.addNotify(JComponent.java:4469)
at java.awt.Container.addImpl(Container.java:1052)
at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:204)
at java.awt.Container.add(Container.java:899)
at com.incors.plaf.alloy.AlloyRootPaneUI.addTitlePane(Unknown Source)
at com.incors.plaf.alloy.AlloyRootPaneUI.installWindowDecoration(Unknown
Source)
at com.incors.plaf.alloy.AlloyRootPaneUI.propertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSup
port.java:333)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSup
port.java:270)
at java.awt.Component.firePropertyChange(Component.java:7159)
at javax.swing.JComponent.addNotify(JComponent.java:4470)
at javax.swing.JRootPane.addNotify(JRootPane.java:680)
at java.awt.Container.addNotify(Container.java:2500)
at java.awt.Window.addNotify(Window.java:466)
at java.awt.Frame.addNotify(Frame.java:501)
at java.awt.Window.pack(Window.java:484)
at sun.awt.im.CompositionArea.<init>(CompositionArea.java:71)
at sun.awt.im.CompositionAreaHandler.createCompositionArea(CompositionAr
eaHandler.java:56)
at sun.awt.im.CompositionAreaHandler.inputMethodTextChanged(CompositionA
reaHandler.java:169)
at sun.awt.im.CompositionAreaHandler.processInputMethodEvent(Composition
AreaHandler.java:144)
at sun.awt.im.InputMethodContext.dispatchEvent(InputMethodContext.java:1
75)
at java.awt.Component.dispatchEventImpl(Component.java:3902)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
------------------------------------------------------------------------------------------
解决方案 »
- 求教!!!!
- A b=new A(){定义一些新方法,新字段};如何调用这些新方法和新字段?
- 感觉线程很难懂,看了thinking in java ,有很长时间了,最后还是对线程不怎么理解,尤其是对于一些线程运行的结果,很多都出乎意料
- 问一个问题,火狼实在是想不通了,请教大家。顶着送分
- 关于Jcreator Pro 2.0的问题
- 求教:安装j2re-1_3_1_02-win-i.exe提示成功安装,可为什么还是不能运行
- 谁能提供最快的办法把byte[]里的所有字节全部放到String里
- 为什么我的Jar文件不能直接执行?(我用JB4生成的*.jar文件不能执行?)
- 请问vs.net提供web service 跟java 的RMI 远程应用调用有什么本质区别?
- Java的快捷键设置出现了问题
- 我试图修改一个所有方法和属性都是静态的类中的一个protected共用方法,是否有解决方案?
- 请看这样一个问题,我是搞不懂了
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x76303e44, pid=2748, tid=3676
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_07-b03 mixed mode, sharing)
# Problematic frame:
# C [IMM32.DLL+0x3e44]
#--------------- T H R E A D ---------------Current thread (0x02e0a958): JavaThread "AWT-Windows" daemon [_thread_in_native, id=3676]siginfo: ExceptionCode=0xc0000005, reading address 0x000db000Registers:
EAX=0x00000000, EBX=0x0000e0d4, ECX=0x00000000, EDX=0x00000400
ESP=0x0334f760, EBP=0x0334f76c, ESI=0x000db000, EDI=0x000015fa
EIP=0x76303e44, EFLAGS=0x00010246Top of Stack: (sp=0x0334f760)
0x0334f760: 000cc4f1 000cc4f9 03055ff8 0334f794
0x0334f770: 763053f2 00010101 000cc4f9 00000000
0x0334f780: 01d10157 000cc208 00000001 7c832e9c
0x0334f790: 7c832e9c 0334f7c4 7630550f 01d10157
0x0334f7a0: 00000000 00000020 00000002 00000002
0x0334f7b0: 00000001 00000000 03055ff8 00000008
0x0334f7c0: 00000020 01d10157 6d1350dd 01d10157
0x0334f7d0: 00000020 03055ff8 00000008 00000018 Instructions: (pc=0x76303e44)
0x76303e34: 57 8b 7d 08 33 db 85 ff 74 29 56 8b 75 0c 33 c0
0x76303e44: 8a 06 50 ff 75 10 ff 15 30 12 30 76 85 c0 74 0b
Stack: [0x03310000,0x03350000), sp=0x0334f760, free space=253k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [IMM32.DLL+0x3e44]
C [IMM32.DLL+0x53f2]
C [IMM32.DLL+0x550f]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j sun.awt.windows.WToolkit.eventLoop()V+0
j sun.awt.windows.WToolkit.run()V+69
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub--------------- P R O C E S S ---------------Java Threads: ( => current thread )
0x03095bd0 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=4884]
0x03095688 JavaThread "TimerQueue" daemon [_thread_blocked, id=2264]
0x00036a30 JavaThread "DestroyJavaVM" [_thread_blocked, id=5668]
0x02f49010 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=2752]
=>0x02e0a958 JavaThread "AWT-Windows" daemon [_thread_in_native, id=3676]
0x02d88e00 JavaThread "AWT-Shutdown" [_thread_blocked, id=5132]
0x00a6e900 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2152]
0x00a6d600 JavaThread "CompilerThread0" daemon [_thread_blocked, id=6052]
0x00a7f7e8 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=5820]
0x00a41850 JavaThread "Finalizer" daemon [_thread_blocked, id=5240]
0x00a40d48 JavaThread "Reference Handler" daemon [_thread_blocked, id=3120]Other Threads:
0x00a3e450 VMThread [id=228]
0x00a79468 WatcherThread [id=4484]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread: NoneHeap
def new generation total 576K, used 148K [0x22bd0000, 0x22c70000, 0x230b0000)
eden space 512K, 16% used [0x22bd0000, 0x22be5100, 0x22c50000)
from space 64K, 100% used [0x22c60000, 0x22c70000, 0x22c70000)
to space 64K, 0% used [0x22c50000, 0x22c50000, 0x22c60000)
tenured generation total 2056K, used 1258K [0x230b0000, 0x232b2000, 0x26bd0000)
the space 2056K, 61% used [0x230b0000, 0x231eabe0, 0x231eac00, 0x232b2000)
compacting perm gen total 8192K, used 1167K [0x26bd0000, 0x273d0000, 0x2abd0000)
the space 8192K, 14% used [0x26bd0000, 0x26cf3fd0, 0x26cf4000, 0x273d0000)
ro space 8192K, 67% used [0x2abd0000, 0x2b12d9f8, 0x2b12da00, 0x2b3d0000)
rw space 12288K, 46% used [0x2b3d0000, 0x2b973808, 0x2b973a00, 0x2bfd0000)Dynamic libraries:
0x00400000 - 0x0040d000 E:\Program Files\Java\jdk1.5.0_07\bin\java.exe
0x7c920000 - 0x7c9b4000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91c000 C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee1000 C:\WINDOWS\system32\RPCRT4.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\MSVCRT.dll
0x6d730000 - 0x6d8c7000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\client\jvm.dll
0x77d10000 - 0x77d9f000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f37000 C:\WINDOWS\system32\GDI32.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x6d2f0000 - 0x6d2f8000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d700000 - 0x6d70c000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\verify.dll
0x6d370000 - 0x6d38d000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\java.dll
0x6d720000 - 0x6d72f000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\zip.dll
0x6d070000 - 0x6d1d7000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\awt.dll
0x72f70000 - 0x72f96000 C:\WINDOWS\system32\WINSPOOL.DRV
0x76990000 - 0x76acd000 C:\WINDOWS\system32\ole32.dll
0x736d0000 - 0x73719000 C:\WINDOWS\system32\ddraw.dll
0x73b30000 - 0x73b36000 C:\WINDOWS\system32\DCIMAN32.dll
0x738b0000 - 0x73980000 C:\WINDOWS\system32\D3DIM700.DLL
0x74680000 - 0x746cb000 C:\WINDOWS\system32\MSCTF.dll
0x76d70000 - 0x76d92000 C:\WINDOWS\system32\apphelp.dll
0x73640000 - 0x7366e000 C:\WINDOWS\system32\msctfime.ime
0x4a3e0000 - 0x4a405000 C:\WINDOWS\system32\winabc.ime
0x7d590000 - 0x7dd82000 C:\WINDOWS\system32\SHELL32.dll
0x77f40000 - 0x77fb6000 C:\WINDOWS\system32\SHLWAPI.dll
0x77180000 - 0x77283000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll
0x5d170000 - 0x5d20a000 C:\WINDOWS\system32\comctl32.dll
0x6d2b0000 - 0x6d2ef000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\fontmanager.dll
0x6d530000 - 0x6d543000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\net.dll
0x71a20000 - 0x71a37000 C:\WINDOWS\system32\WS2_32.dll
0x71a10000 - 0x71a18000 C:\WINDOWS\system32\WS2HELP.dll
0x719c0000 - 0x719fe000 C:\WINDOWS\system32\mswsock.dll
0x60fd0000 - 0x61025000 C:\WINDOWS\system32\hnetcfg.dll
0x58a00000 - 0x58a07000 C:\WINDOWS\System32\wship6.dll
0x6d550000 - 0x6d559000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\nio.dll
0x6d230000 - 0x6d253000 E:\Program Files\Java\jdk1.5.0_07\jre\bin\dcpr.dllVM Arguments:
java_command: login
Launcher Type: SUN_STANDARDEnvironment Variables:
JAVA_HOME=E:\Program Files\Java\jdk1.5.0_07
CLASSPATH=.;.;e:\PROGRA~1\java\JDK15~1.0_0\lib\sound.jar;e:\PROGRA~1\java\JDK15~1.0_0\lib\jmf.jar;e:\PROGRA~1\java\JDK15~1.0_0\lib;C:\WINDOWS\java\classes;.
PATH=E:\Program Files\Java\jet4.5-eval\bin;c:\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI.ACE\;E:\Program Files\Java\jdk1.5.0_07\bin;E:\Program Files\Java\jdk1.5.0_07\jre\bin
USERNAME=Jason
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 47 Stepping 2, AuthenticAMD--------------- S Y S T E M ---------------OS: Windows XP Build 2600 Service Pack 2CPU:total 1 family 47, cmov, cx8, fxsr, mmx, sse, sse2Memory: 4k page, physical 1048048k(583204k free), swap 2519192k(2157640k free)vm_info: Java HotSpot(TM) Client VM (1.5.0_07-b03) for windows-x86, built on May 3 2006 01:04:38 by "java_re" with MS VC++ 6.0
换成1.6的没有问题了,你去试一下
http://community.csdn.net/Expert/topic/5096/5096749.xml?temp=.2967646
boolean firstInputEvent = true;
public void eventDispatched(AWTEvent event) {
if (firstInputEvent) {
firstInputEvent = false;
JFrame.setDefaultLookAndFeelDecorated(false); final AWTEventListener listener = this;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
Toolkit.getDefaultToolkit().removeAWTEventListener(listener);
}
});
}
}
}, AWTEvent.INPUT_METHOD_EVENT_MASK);把这段放在 setLookAndFeel()之后