📄 answers-ch5.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><html> <head> <title>Answers: Writing Event Listeners (The Java™ Tutorials > Creating a GUI with JFC/Swing > )</title><style type="text/css"> .FigureCaption { margin-left: 1in; margin-right: 1in; font-family: sans-serif; font-size: smaller; text-align: justify; } #TopBar_bl { background: url(../../images/java_bar_bl.gif) 0 100% no-repeat; width: 100%; height: 60px; } #TopBar_br { background: url(../../images/java_bar_br.gif) 100% 100% no-repeat; width: 100%; height: 60px; } #TopBar_tl { background: url(../../images/java_bar_tl.gif) 0 0 no-repeat; width: 100%; height: 60px; } #TopBar_tr { background: url(../../images/java_bar_tr.gif) 100% 0 no-repeat; width: 100%; height: 60px; } #TopBar { background: #35556B url(../../images/java_bar.gif); margin: 10px 10px 0 10px; height:60px; min-width:700px; color: white; font-family: sans-serif; font-weight: bold; } @media print { #BreadCrumbs, #Download { display: none; } } #TopBar_right { line-height: 14px; float: right; padding-top: 2px; padding-right: 30px; text-align: center; } @media print { #TopBar_right { display: none; } } #TopBar_right a { font-size: 12px; margin: 3px; padding: 0; } #TopBar a:visited, #TopBar a:link { color: white; text-decoration: none; } #TopBar a:hover, #TopBar a:active { background-color: white; color: #35556B; } #BreadCrumbs { padding: 4px 5px 0.5em 0; font-family: sans-serif; float: right; } #BreadCrumbs a { color: blue; } #BreadCrumbs a:visited, #BreadCrumbs a:link { text-decoration: none; } #BreadCrumbs a:hover, #BreadCrumbs a:active { text-decoration: underline; } #PageTitle { margin: 0 5px 0.5em 0; color: #E76F00; font-family: sans-serif; font-weight: bold; font-size: 20px; } .LeftBar_shown { width: 13em; float: left; margin-left: 10px; margin-top: 4px; margin-bottom: 2em; } @media print { .LeftBar_shown { display: none; } } .LeftBar_hidden { display: none; } #Footer { padding-top: 10px; padding-left: 10px; margin-right: 10px; } .NavBit { padding: 4px 5px 0.5em 0; font-family: sans-serif; } @media print { .NavBit { display: none; } } #TagNotes { text-align: right; font-size: smaller; font-family: sans-serif; } @media print { #TagNotes a:visited, #TagNotes a:link { color: #35556B; text-decoration: none; } } #Contents a, .NavBit a, #TagNotes a { color: blue } #TagNotes a:visited, #TagNotes a:link, #Contents a:visited, #Contents a:link, .NavBit a:visited, .NavBit a:link { text-decoration: none; } #TagNotes a:hover, #TagNotes a:active, #Contents a:hover, #Contents a:active, .NavBit a:hover, .NavBit a:active { text-decoration: underline; } #Contents { float: left; font-family: sans-serif; } @media print { #Contents { display: none; } } @media screen { div.PrintHeaders { display: none; } } .linkLESSON, .nolinkLESSON { margin-left: 0.5em; text-indent: -0.5em } .linkAHEAD, .nolinkAHEAD, .linkQUESTIONS, .nolinkQUESTIONS { margin-left: 1.5em; text-indent: -0.5em } .linkBHEAD, .nolinkBHEAD { margin-left: 2.5em; text-indent: -0.5em } .linkCHEAD, .nolinkCHEAD { margin-left: 3.5em; text-indent: -0.5em } .nolinkLESSON, .nolinkAHEAD, .nolinkBHEAD, .nolinkCHEAD, .nolinkQUESTIONS { font-weight: bold; color: #E76F00; } .MainFlow_indented { margin-right: 10px; margin-left: 15em; margin-bottom: 2em; } .MainFlow_wide { margin-right: 10px; margin-left: 10px; margin-bottom: 2em; } @media print { .MainFlow_indented, .MainFlow_wide { padding-top: 0; margin-top: 10px; margin-right: 10px; margin-left: 0; } } h3, h4, h5 { color: #E76F00; font-family: sans-serif; } #ToggleLeft { display: none; } /t</style> </head><body> <div id=TopBar> <div id=TopBar_tr> <div id=TopBar_tl> <div id=TopBar_br> <div id=TopBar_bl> <div id=TopBar_right> <a target="_blank" href="http://java.sun.com/javase/6/download.jsp">Download the JDK</a> <br> <a href="../../search.html" target="_blank">Search the Tutorials</a> </div> <div class=PrintHeaders> <b>Trail:</b> Creating a GUI with JFC/Swing </div> </div> </div> </div> </div> </div> <div class=MainFlow_wide> <span id=BreadCrumbs> <a href=../../index.html target=_top>Home Page</a> > <a href=../index.html target=_top>Creating a GUI with JFC/Swing</a> </span> <div class=NavBit> <a href=../TOC.html>« Previous</a> • <a href=../TOC.html>TOC</a> </div> <div id=PageTitle>Answers: Writing Event Listeners</div> <blockquote></blockquote>Use this lesson’s tables, the <A HREF="../components/index.html">componenthow-to sections</A> and the <A HREF="../events/handling.html">eventlisteners how-to sections</A> to complete these questions andexercises.<H3>Questions</H3><BLOCKQUOTE> <P><FONT COLOR="#ff0000">Question 1:</FONT> What listener would you implement to be notified when a particular component has appeared on screen? What method tells you this information?<BR> <FONT COLOR="#009900">Answer 1:</FONT> You would register a <code>ComponentListener</code> on the component. The <code>componentShown</code> method. This method is called when the window is first displayed or is deiconified. </P> <P><FONT COLOR="#ff0000">Question 2:</FONT> What listener would you implement to be notified when the user has finished editing a text field by pressing Enter? What listener would you implement to be notified as each character is typed into a text field? Note that you should not implement a general-purpose key listener, but a listener specific to text.<BR> <FONT COLOR="#009900">Answer 2:</FONT> To be notified when the user presses Enter, you would register an <code>ActionListener</code> on the text field; the <code>actionPerformed</code> method is called when the user types Enter. Note that the Enter character is not part of the resulting string. To be notified as each character is typed, you would register a <code>DocumentListener</code> on the text field's <code>Document</code>. The <code>insertUpdate</code> method is then called as each character is typed. Note that this is not the correct way to implement input validation. For that behavior you should check out the <A HREF="../misc/focus.html#inputverificationapi">Input Verification API</A> section in <A HREF="../misc/focus.html">How to Use the Focus Subsystem</A>. </P> <P><FONT COLOR="#ff0000">Question 3:</FONT> What listener would you implement to be notified when a spinner’s value has changed? How would you get the spinner’s new value?<BR> <FONT COLOR="#009900">Answer 3:</FONT> To be notified when the value has changed, you would register a <code>ChangeListener</code> on the spinner. You would get the new value through the event's source in the <code>stateChanged</code> method. The following code snippet shows how this could be done:<blockquote><pre>public void stateChanged(ChangeEvent e) { JSpinner mySpinner = (JSpinner)(e.getSource()); SpinnerNumberModel model = (SpinnerNumberModel)(mySpinner.getModel()); Number currentValue = model.getNumber(); ...}</pre></blockquote> <P><FONT COLOR="#ff0000">Question 4:</FONT> The default behavior for the focus subsystem is to consume the focus traversal keys, such as Tab and Shift Tab. Say you want to prevent this behavior in one of your application’s components. How would you accomplish this?<BR> <FONT COLOR="#009900">Answer 4:</FONT> You call <code>setFocusTraversalKeysEnabled(false)</code> on that particular component. Note that you must then handle focus traversal manually. See <A HREF="../events/keylistener.html">How to Write a Key Listener</A> and <A HREF="../misc/focus.html">How to Use the Focus Subsystem</A> for more information. </P></BLOCKQUOTE><H3>Exercises</H3><BLOCKQUOTE> <P><FONT COLOR="#ff0000">Exercise 1.</FONT> Take the <a target="source" href="../events/examples/Beeper.java"><font color="#bb000f"><code>Beeper.java</code></font></a><a href="../events/examples/Beeper.java"><img src="../../images/sourceIcon.gif" width=11 height=11 border=0 align="ABSMIDDLE" alt="(in a .java source file)"></a> example and add a text field. Implement it so that when the user has finishing entering data, the system beeps.<BR> <FONT COLOR="#009900">Answer 1:</FONT> See <a target="source" href="examples/Beeper1.java"><font color="#bb000f"><code>Beeper1.java</code></font></a><a href="examples/Beeper1.java"><img src="../../images/sourceIcon.gif" width=11 height=11 border=0 align="ABSMIDDLE" alt="(in a .java source file)"></a> <P><FONT COLOR="#ff0000">Exercise 2.</FONT> Take the <a target="source" href="../events/examples/Beeper.java"><font color="#bb000f"><code>Beeper.java</code></font></a><a href="../events/examples/Beeper.java"><img src="../../images/sourceIcon.gif" width=11 height=11 border=0 align="ABSMIDDLE" alt="(in a .java source file)"></a> example and add a selectable component that allows the user to enter a number from 1 to 10. For example, you can use a combo box, a set of radio buttons, or a spinner. Implement it so that when the user has selected the number, the system beeps that many times.<BR> <FONT COLOR="#009900">Answer 2:</FONT> See <a target="source" href="examples/Beeper2.java"><font color="#bb000f"><code>Beeper2.java</code></font></a><a href="examples/Beeper2.java"><img src="../../images/sourceIcon.gif" width=11 height=11 border=0 align="ABSMIDDLE" alt="(in a .java source file)"></a> </BLOCKQUOTE> </blockquote> </div> <div id=Footer> <span class=NavBit> <a href=../TOC.html>« Previous</a> • <a href=../TOC.html>TOC</a> </span><div id=TagNotes> Problems with the examples? Try <a target="_blank" href=../../information/run-examples.html>Compiling and Running the Examples: FAQs</a>. <br> Complaints? Compliments? Suggestions? <a target="_blank" href="http://developer.sun.com/contact/tutorial_feedback.jsp">Give us your feedback</a>.<br><br> <a target="_blank" href="../../information/copyright.html">Copyright</a> 1995-2006 Sun Microsystems, Inc. All rights reserved. <span id=Download></span></div> </div> <div class=PrintHeaders> <b>Previous page:</b> Questions and Exercises: Writing Event Listeners </div> </body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -