Java教程已针对JDK 8编写。本页面中描述的示例和实践不利用后续版本引入的改进,并可能使用已不再可用的技术。
有关Java SE 9及以后版本中更新的语言功能的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息,请参阅JDK发行说明。
问题:我的应用程序没有显示我通过UIManager.setLookAndFeel
请求的外观和感觉。
您可能要么将外观和感觉设置为无效的外观和感觉,要么在UI管理器加载默认外观和感觉之后设置它。如果您确定您指定的外观和感觉是有效的,并且设置外观和感觉是您的程序的第一件事情(例如,在其主方法的顶部),请检查是否有一个静态字段引用了一个Swing类。如果没有指定任何外观和感觉,则此引用可能导致加载默认外观和感觉。有关更多信息,包括如何在创建GUI之后设置外观和感觉,请参阅外观和感觉部分。
问题:为什么我的组件没有获得焦点?
JComponent
的直接子类)吗?如果是这样,您可能需要为您的组件提供输入映射和鼠标监听器。有关更多信息和演示,请参阅如何使自定义组件可获得焦点。JWindow
对象内?焦点系统要求JWindow
的所有者框架可见,以便JWindow
对象中的任何组件都能获得焦点。默认情况下,如果未指定JWindow
对象的所有者框架,则会为其创建一个不可见的所有者框架。解决方法是在创建JWindow
对象时指定可见和可获得焦点的所有者框架,或者改用JDialog
或JFrame
对象。问题:为什么我的对话框无法接收用户按下Escape键时生成的事件?
如果您的对话框包含一个文本字段,它可能会消耗事件。
KeyEventDispatcher
。JDialog
对象中的任何JComponent
组件上注册一个键绑定,使用WHEN_IN_FOCUSED_WINDOW
输入映射。有关更多信息,请参阅如何使用键绑定页面。问题:为什么我无法将Swing组件应用于托盘图标?TrayIcon
类的当前实现支持PopupMenu
组件,但不支持其Swing对应的JPopupMenu
。此限制限制了使用其他Swing功能(例如菜单图标)的能力。请参阅Bug ID 6285881。
JTrayIcon
类来消除这个不便。在那之前,请使用AWT组件添加菜单项、复选框菜单项或子菜单。如果您在本节中找不到您的问题,请查阅解决常见组件问题。