站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > Java Tutorial 5.0 英文版

Solving Common Problems Using Other Swing Features - Java Tutorial 5.0 英文版

The JavaTM Tutorial
Previous Page Lesson Contents Next Page Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form

Trail: Creating a GUI with JFC/Swing
Lesson: Using Other Swing Features

Solving Common Problems Using Other Swing Features

Problem: My application isn't showing the look and feel I've requested via UIManager.setLookAndFeel.

You probably either set the look and feel to an invalid look and feel or set it after the UI manager loaded the default look and feel. If you're sure that the look and feel you specified is valid and setting the look and feel is the first thing your program does (at the top of its main method, for example), check whether you have a static field that references a Swing class. This reference can cause the default look and feel to be loaded if none has been specified. For more information, including how to set a look and feel after the GUI has been created, see the look and feel section.

Problem: Why isn't my component getting the focus?

  • Is it a custom component (for example, a direct subclass of JComponent) that you created? If so, you may need to give your component an input map and mouse listener. See How to Make a Custom Component Focusable for more information and a demo.

  • Is the component inside of a JWindow? The focus system requires a JWindow's owning frame to be visible for any components in the JWindow to get the focus. By default, if you don't specify an owning frame for a JWindow, an invisible owning frame is created for it. The solution is to either specify a visible owning frame when creating the JWindow or to use a JDialog or JFrame instead.

Problem: Why can't my dialog receive the event generated when the user hits the Escape key? This worked until I ported to release 1.4.

If your dialog contains a text field, it may be consuming the event. (Prior to release 1.4.0, the text field didn't get the focus.)

  • If you want to get the Escape event regardless of whether a component consumes it, you should use a KeyEventDispatcher (in a .java source file).

  • If you want to get the Escape event only if a component hasn't consumed it, then register a key binding on any JComponent in the JDialog, using the WHEN_IN_FOCUSED_WINDOW input map. For more information, see the How to Use Key Bindings (in the Creating a GUI with JFC/Swing trail) page.

If you don't find your problem in this section, consult Solving Common Component Problems (in the Creating a GUI with JFC/Swing trail).

If there's a problem you'd like to see mentioned on this page, please send us feedback.


Previous Page Lesson Contents Next Page Start of Tutorial > Start of Trail > Start of Lesson Search
Feedback Form

Copyright 1995-2005 Sun Microsystems, Inc. All rights reserved.