⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 combobox_cbmultikey.htm

📁 这个压缩包里的都是超级经典的java例子
💻 HTM
字号:
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Selecting an Item in a JComboBox Component with Multiple Keystrokes (Java Developers Almanac Example)
</TITLE>
<META CONTENT="Patrick Chan" NAME="AUTHOR">
<META CONTENT="Code Examples from The Java Developers Almanac 1.4" NAME="DESCRIPTION">
<META CONTENT="Addison-Wesley/Patrick Chan" NAME="OWNER">
<META CONTENT="3/20/02" NAME="revision">
<META CONTENT="no-cache" HTTP-EQUIV="Pragma">
<LINK href="/almanac.css" media="screen" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
</TABLE>
<br>
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD></TD>
</TR>
<TR>
<TD rowspan="3"><A HREF="/?l=ex"><IMG BORDER="0" ALIGN="BOTTOM" HSPACE="10" SRC="/egs/almanac14a.jpg"></A></TD><TD VALIGN="top">
<h1>The Java Developers Almanac 1.4</h1>
<br>
        Order this book from <a href="/cgi-bin/scripts/redirect.pl?l=ex&url=http://www.amazon.com/exec/obidos/ASIN/0201752808/xeo">Amazon</a>.
    </TD>
</TR>
<TR>
<TD align="right" valign="bottom">
<FORM method="get" action="/cgi-bin/search/find.pl">
<INPUT size="25" name="words" type="text"><INPUT value="Search" type="submit">
</FORM>
</TD>
</TR>
</TABLE>
<HR color="#6666cc">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0">
<TR>
<TD valign="top"><script type="text/javascript">
<!--
google_ad_client = "pub-6001183370374757";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_channel = "4777242811";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "6666CC";
google_color_url = "6666CC";
google_color_text = "000000";
//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top">
<DIV ALIGN="LEFT">
<A HREF="/">Home</A>
    &gt;
    <A HREF="../index.html">List of Packages</A>
    &gt;

    
    <A HREF="../javax.swing/pkg.html">javax.swing</A><font color="#666666" class="xsmall-font">
        &nbsp;[141 examples]
    </font>
        &gt;
        <B><A HREF="../javax.swing/pkg.html#JComboBox">JComboBox</A></B><font color="#666666" class="xsmall-font">
            &nbsp;[12 examples]
            </font>
</DIV><P>
  <h3>e760. Selecting an Item in a JComboBox Component with Multiple Keystrokes</h3>

By default, when the user types a keystroke in a read-only combobox and an
item in the combobox starts with the typed keystroke, the combobox will
select that item. This behavior is not ideal if there are multiple
items that start with the same letter. 

<P> This example demonstrates how to customize a combobox so that
it will select an item based on multiple keystrokes. More
specifically, if a keystroke is typed within 300 milliseconds of the
previous keystroke, the new keystroke is appended to the previous
keystroke, and the combobox will select an item that starts with both
keystrokes.


<pre>    // Create a read-only combobox
    String[] items = {<font color="#0066ff"><i>"Ant", "Ape", "Bat", "Boa", "Cat", "Cow"</i></font>};
    JComboBox cb = new JComboBox(items);
    
    // Install the custom key selection manager
    cb.setKeySelectionManager(new MyKeySelectionManager());
    
    // This key selection manager will handle selections based on multiple keys.
    class MyKeySelectionManager implements JComboBox.KeySelectionManager {
        long lastKeyTime = 0;
        String pattern = "";
    
        public int selectionForKey(char aKey, ComboBoxModel model) {
            // Find index of selected item
            int selIx = 01;
            Object sel = model.getSelectedItem();
            if (sel != null) {
                for (int i=0; i&lt;model.getSize(); i++) {
                    if (sel.equals(model.getElementAt(i))) {
                        selIx = i;
                        break;
                    }
                }
            }
    
            // Get the current time
            long curTime = System.currentTimeMillis();
    
            // If last key was typed less than 300 ms ago, append to current pattern
            if (curTime - lastKeyTime &lt; 300) {
                pattern += ("" + aKey).toLowerCase();
            } else {
                pattern = ("" + aKey).toLowerCase();
            }
    
            // Save current time
            lastKeyTime = curTime;
    
            // Search forward from current selection
            for (int i=selIx+1; i&lt;model.getSize(); i++) {
                String s = model.getElementAt(i).toString().toLowerCase();
                if (s.startsWith(pattern)) {
                    return i;
                }
            }
    
            // Search from top to current selection
            for (int i=0; i&lt;selIx ; i++) {
                if (model.getElementAt(i) != null) {
                    String s = model.getElementAt(i).toString().toLowerCase();
                    if (s.startsWith(pattern)) {
                        return i;
                    }
                }
            }
            return -1;
        }
    }
</pre>
<P><table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td bgcolor="#6666cc" align="center"><font color="#ffffff">
            &nbsp;<b>Related Examples</b></font></td>
</tr>
</table>


e756. <a class="eglink" href="combobox_CbRead.html?l=rel">
    Creating a JComboBox Component
</a>
<br>

e757. <a class="eglink" href="combobox_CbGetCur.html?l=rel">
    Getting and Setting the Selected Item in a JComboBox Component
</a>
<br>

e758. <a class="eglink" href="combobox_CbGetItems.html?l=rel">
    Getting the Items in a JComboBox Component
</a>
<br>

e759. <a class="eglink" href="combobox_CbAddItems.html?l=rel">
    Adding and Removing an Item in a JComboBox Component
</a>
<br>

e761. <a class="eglink" href="combobox_CbIsMenu.html?l=rel">
    Determining If the Menu of a JComboBox Component Is Visible
</a>
<br>

e762. <a class="eglink" href="combobox_CbKeyPopup.html?l=rel">
    Displaying the Menu in a JComboBox Component Using a Keystroke
</a>
<br>

e763. <a class="eglink" href="combobox_CbIsKeySel.html?l=rel">
    Displaying the Menu in a JComboBox Component Using a Keystroke If the Selected Item Is Not Unique
</a>
<br>

e764. <a class="eglink" href="combobox_CbScrollList.html?l=rel">
    Setting the Number of Visible Items in the Menu of a JComboBox Component
</a>
<br>

e765. <a class="eglink" href="combobox_CbItemEvt.html?l=rel">
    Listening for Changes to the Selected Item in a JComboBox Component
</a>
<br>

e766. <a class="eglink" href="combobox_CbActionEvt.html?l=rel">
    Listening for Action Events from a JComboBox Component
</a>
<br>

e767. <a class="eglink" href="combobox_CbMenuEvt.html?l=rel">
    Determining When the Menu of a JComboBox Component Is Displayed
</a>
<br>


<table width="600" CELLSPACING="0" CELLPADDING="2" BORDER="0">
<tr>
<td align="left">
<br>
        See also: 
<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Actions">
    Actions
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JButton">
    JButton
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JCheckBox">
    JCheckBox
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JDesktop%20and%20JInternalFrame">
    JDesktop and JInternalFrame
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JFrame,%20JWindow,%20JDialog">
    JFrame, JWindow, JDialog
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JLabel">
    JLabel
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JList">
    JList
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JProgressBar">
    JProgressBar
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JRadioButton">
    JRadioButton
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JScrollPane">
    JScrollPane
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JSlider">
    JSlider
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JSpinner">
    JSpinner
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JSplitPane">
    JSplitPane
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JTabbedPane">
    JTabbedPane
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#JToolBar">
    JToolBar
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Keystrokes%20and%20Input%20Maps">
    Keystrokes and Input Maps
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Layout">
    Layout
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Look%20and%20Feel">
    Look and Feel
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Menus">
    Menus
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Progress%20Monitor">
    Progress Monitor
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#The%20Screen">
    The Screen
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#Tool%20Tips">
    Tool Tips
</a>&nbsp;&nbsp;

<a class="eglink" href="/egs/javax.swing/pkg.html?l=rel#UI%20Default%20Values">
    UI Default Values
</a>&nbsp;&nbsp;

</td>
</tr>
</table>

<br>

<br>
<FONT class="xsmall-font">
&copy; 2002 Addison-Wesley.
</FONT></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD valign="top"><A href="http://compositesw.com/devzone?ref=javaalmanac"><IMG alt="Click Here" height="600" width="120" border="0" src="/csw_oad_120x600_final.gif"></A></TD>
</TR>
</TABLE>
</BODY>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META CONTENT="NO-CACHE" HTTP-EQUIV="PRAGMA">
</HEAD>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -