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

📄 comboboxcelleditor.java

📁 java实现浏览器等本地桌面的功能
💻 JAVA
字号:
/* * $Id: ComboBoxCellEditor.java,v 1.3 2005/10/10 18:01:33 rbair Exp $ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */package org.jdesktop.swingx.autocomplete;import java.awt.event.ActionEvent;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.io.Serializable;import javax.swing.AbstractCellEditor;import javax.swing.ComboBoxEditor;import javax.swing.JComboBox;import javax.swing.JComponent;import javax.swing.table.TableCellEditor;/** * <p>This is a cell editor that can be used when a combo box (that has been set * up for automatic completion) is to be used in a JTable. The * {@link javax.swing.DefaultCellEditor DefaultCellEditor} won't work in this * case, because each time an item gets selected it stops cell editing and hides * the combo box. * </p> * <p> * Usage example: * </p> * <code> * JTable table = ...;</br> * JComboBox comboBox = ...;</br> * ...</br> * TableColumn column = table.getColumnModel().getColumn(0);</br> * column.setCellEditor(new ComboBoxCellEditor(comboBox)); *  </code> */public class ComboBoxCellEditor extends AbstractCellEditor implements TableCellEditor, Serializable {        private JComboBox comboBox;    // a Listener listening for key events (handling enter-key)    // and changes of the combo box' editor component.    private Handler handler;        /**     * Creates a new ComboBoxCellEditor.     * @param comboBox the comboBox that should be used as the cell editor.     */    public ComboBoxCellEditor(final JComboBox comboBox) {        this.comboBox = comboBox;                handler = new Handler();                // Don't do this:        // this.comboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);        // it probably breaks various things                // hitting enter in the combo box should stop cellediting        JComponent editorComponent = (JComponent) comboBox.getEditor().getEditorComponent();        editorComponent.addKeyListener(handler);        // remove the editor's border - the cell itself already has one        editorComponent.setBorder(null);        // editor component might change (e.g. a look&feel change)        // the new editor component needs to be modified then (keyListener, border)        comboBox.addPropertyChangeListener(handler);    }        // ------ Implementing CellEditor ------    /**     * Returns the value contained in the combo box     * @return the value contained in the combo box     */    public Object getCellEditorValue() {        return comboBox.getSelectedItem();    }        /**     * Tells the combo box to stop editing and accept any partially edited value as the value of the combo box.     * Always returns true.     * @return true     */    public boolean stopCellEditing() {        if (comboBox.isEditable()) {            // Notify the combo box that editing has stopped (e.g. User pressed F2)            comboBox.actionPerformed(new ActionEvent(this, 0, ""));        }        fireEditingStopped();        return true;    }        // ------ Implementing TableCellEditor ------    /**     * Sets an initial value for the combo box.     * Returns the combo box that should be added to the client's Component hierarchy.     * Once installed in the client's hierarchy this combo box will then be able to draw and receive user input.     * @param table the JTable that is asking the editor to edit; can be null     * @param value the value of the cell to be edited; null is a valid value     * @param isSelected will be ignored     * @param row the row of the cell being edited     * @param column the column of the cell being edited     * @return the combo box for editing     */    public java.awt.Component getTableCellEditorComponent(javax.swing.JTable table, Object value, boolean isSelected, int row, int column) {        comboBox.setSelectedItem(value);        return comboBox;    }        // ------ Implementing TreeCellEditor ------//    public java.awt.Component getTreeCellEditorComponent(javax.swing.JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) {//        String stringValue = tree.convertValueToText(value, isSelected, expanded, leaf, row, false);//        comboBox.setSelectedItem(stringValue);//        return comboBox;//    }        class Handler extends KeyAdapter implements PropertyChangeListener {        public void keyPressed(KeyEvent keyEvent) {            int keyCode = keyEvent.getKeyCode();            if (keyCode==keyEvent.VK_ENTER) stopCellEditing();        }        public void propertyChange(PropertyChangeEvent e) {            if (e.getPropertyName().equals("editor")) {                ComboBoxEditor editor = comboBox.getEditor();                if (editor!=null && editor.getEditorComponent()!=null) {                    JComponent editorComponent = (JComponent) comboBox.getEditor().getEditorComponent();                    editorComponent.addKeyListener(this);                    editorComponent.setBorder(null);                }            }        }    }}

⌨️ 快捷键说明

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