Java Swing中的IllegalComponentStateException

前端之家收集整理的这篇文章主要介绍了Java Swing中的IllegalComponentStateException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在做基础 java swing程序的时候,我有一个奇怪的错误,我只在我的电脑上(我试过另外两个,一切都很好).
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.BoxLayout;
  4. import javax.swing.JButton;
  5. import javax.swing.JFrame;
  6. import javax.swing.JOptionPane;
  7. import javax.swing.JPanel;
  8.  
  9. public class ModalDialogsTest extends JFrame implements ActionListener{
  10.  
  11. private JButton choice;
  12.  
  13. ModalDialogsTest(){
  14. setSize(400,300);
  15. JPanel panel = new JPanel();
  16. getContentPane().add(panel);
  17. panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
  18. choice = new JButton("My button");
  19. panel.add(choice);
  20. choice.addActionListener(this);
  21. }
  22.  
  23. public void actionPerformed(ActionEvent event){
  24. simpleStringChoiceDialog();
  25. }
  26.  
  27. private void simpleStringChoiceDialog(){
  28. Object[] possibilities = {"choice 1","choice 2","choice 3"};
  29. String s = (String)JOptionPane.showInputDialog(
  30. this,null,JOptionPane.PLAIN_MESSAGE,possibilities,possibilities[0]);
  31. System.out.println(s);
  32. }
  33.  
  34. public static void main(String[] args) {
  35. ModalDialogsTest newWindow = new ModalDialogsTest();
  36. newWindow.setVisible(true);
  37. }
  38. }

问题是当我点击下拉菜单选择一个选项时出现错误.错误是:

  1. java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
  2. at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:2044)
  3. at java.awt.Component.getLocationOnScreen(Component.java:2018)
  4. at sun.lwawt.macosx.CAccessibility$22.call(CAccessibility.java:390)
  5. at sun.lwawt.macosx.CAccessibility$22.call(CAccessibility.java:388)
  6. at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:527)
  7. at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)
  8. at sun.lwawt.macosx.LWCToolkit$CPeerEvent.dispatch(LWCToolkit.java:684)
  9. at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
  10. at java.awt.EventQueue.access$200(EventQueue.java:103)
  11. at java.awt.EventQueue$3.run(EventQueue.java:682)
  12. at java.awt.EventQueue$3.run(EventQueue.java:680)
  13. at java.security.AccessController.doPrivileged(Native Method)
  14. at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  15. at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
  16. at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
  17. at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
  18. at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:155)
  19. at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
  20. at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
  21. at java.security.AccessController.doPrivileged(Native Method)
  22. at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
  23. at java.awt.Dialog.show(Dialog.java:1077)
  24. at javax.swing.JOptionPane.showInputDialog(JOptionPane.java:583)
  25. at ModalDialogsTest.simpleStringChoiceDialog(ModalDialogsTest.java:109)
  26. at ModalDialogsTest.actionPerformed(ModalDialogsTest.java:70)
  27. at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  28. at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  29. at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  30. at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  31. at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  32. at java.awt.Component.processMouseEvent(Component.java:6505)
  33. at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
  34. at java.awt.Component.processEvent(Component.java:6270)
  35. at java.awt.Container.processEvent(Container.java:2229)
  36. at java.awt.Component.dispatchEventImpl(Component.java:4861)
  37. at java.awt.Container.dispatchEventImpl(Container.java:2287)
  38. at java.awt.Component.dispatchEvent(Component.java:4687)
  39. at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  40. at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  41. at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  42. at java.awt.Container.dispatchEventImpl(Container.java:2273)
  43. at java.awt.Window.dispatchEventImpl(Window.java:2719)
  44. at java.awt.Component.dispatchEvent(Component.java:4687)
  45. at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
  46. at java.awt.EventQueue.access$200(EventQueue.java:103)
  47. at java.awt.EventQueue$3.run(EventQueue.java:682)
  48. at java.awt.EventQueue$3.run(EventQueue.java:680)
  49. at java.security.AccessController.doPrivileged(Native Method)
  50. at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  51. at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  52. at java.awt.EventQueue$4.run(EventQueue.java:696)
  53. at java.awt.EventQueue$4.run(EventQueue.java:694)
  54. at java.security.AccessController.doPrivileged(Native Method)
  55. at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  56. at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
  57. at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
  58. at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
  59. at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
  60. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
  61. at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
  62. at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
  63. choice 2

正如你所看到的,一个错误发生但我仍然可以得到函数的结果所以我没有得到什么错误…任何线索?我在MacOS X Mountain Lion上使用Java 7.

好的,这是你问我的结果:
的System.out.println(System.getProperty( “java.vm.name”));给我:

  1. Java HotSpot(TM) 64-Bit Server VM.

.System.getProperties()名单(的System.out);给我:

  1. -- listing properties --
  2. java.runtime.name=Java(TM) SE Runtime Environment
  3. sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk...
  4. java.vm.version=23.3-b01
  5. user.country.format=IE
  6. gopherProxySet=false
  7. java.vm.vendor=Oracle Corporation
  8. java.vendor.url=http://java.oracle.com/
  9. path.separator=:
  10. java.vm.name=Java HotSpot(TM) 64-Bit Server VM
  11. file.encoding.pkg=sun.io
  12. user.country=FR
  13. sun.java.launcher=SUN_STANDARD
  14. sun.os.patch.level=unknown
  15. java.vm.specification.name=Java Virtual Machine Specification
  16. user.dir=/Users/hugo/Documents/workspace/dialogs
  17. java.runtime.version=1.7.0_07-b10
  18. java.awt.graphicsenv=sun.awt.CGraphicsEnvironment
  19. java.endorsed.dirs=/Library/Java/JavaVirtualMachines/jdk...
  20. os.arch=x86_64
  21. java.io.tmpdir=/var/folders/2n/q2bb2df90qqb_x38djlwx...
  22. line.separator=
  23.  
  24. java.vm.specification.vendor=Oracle Corporation
  25. os.name=Mac OS X
  26. sun.jnu.encoding=US-ASCII
  27. java.library.path=/Users/hugo/Library/Java/Extensions:/...
  28. java.specification.name=Java Platform API Specification
  29. java.class.version=51.0
  30. sun.management.compiler=HotSpot 64-Bit Tiered Compilers
  31. os.version=10.8
  32. http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
  33. user.home=/Users/hugo
  34. user.timezone=
  35. java.awt.printerjob=sun.lwawt.macosx.CPrinterJob
  36. file.encoding=US-ASCII
  37. java.specification.version=1.7
  38. user.name=hugo
  39. java.class.path=/Users/hugo/Documents/workspace/dialo...
  40. java.vm.specification.version=1.7
  41. sun.arch.data.model=64
  42. java.home=/Library/Java/JavaVirtualMachines/jdk...
  43. sun.java.command=ModalDialogsTest
  44. java.specification.vendor=Oracle Corporation
  45. user.language=fr
  46. user.language.format=en
  47. awt.toolkit=sun.lwawt.macosx.LWCToolkit
  48. java.vm.info=mixed mode
  49. java.version=1.7.0_07
  50. java.ext.dirs=/Users/hugo/Library/Java/Extensions:/...
  51. sun.boot.class.path=/Library/Java/JavaVirtualMachines/jdk...
  52. java.vendor=Oracle Corporation
  53. file.separator=/
  54. java.vendor.url.bug=http://bugreport.sun.com/bugreport/
  55. sun.cpu.endian=little
  56. sun.io.unicode.encoding=UnicodeBig
  57. sun.font.fontmanager=sun.font.CFontManager
  58. socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16
  59. ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
  60. sun.cpu.isalist=

编辑:我忘了提到我尝试在另一个mac上完全像我的(除了我有更多的内存,但没关系)和在Windows 7计算机上.

解决方法

我在Mac Yosemite上遇到了与Java 7相同的问题.在我的情况下,它是由我用于在桌面上安排我的窗口的第三方工具“Cinch”引起的.取消激活该工具会使例外消失.

猜你在找的Java相关文章