📄 jxtabledemopanel.java
字号:
/* * $Id: JXTableDemoPanel.java,v 1.17 2005/06/29 09:54:50 kleopatra Exp $ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, * Santa Clara, California 95054, U.S.A. All rights reserved. */package org.jdesktop.demo.swingx;import java.awt.Dimension;import java.awt.Point;import java.beans.IntrospectionException;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.Map;import javax.swing.BorderFactory;import javax.swing.JComboBox;import javax.swing.JComponent;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.SwingUtilities;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.TableCellRenderer;import org.jdesktop.binding.JavaBeanDataModel;import org.jdesktop.binding.metadata.EnumeratedMetaData;import org.jdesktop.binding.metadata.MetaData;import org.jdesktop.binding.swingx.BindingFactory;import org.jdesktop.binding.swingx.BindingHandler;import org.jdesktop.demo.DemoPanel;import org.jdesktop.demo.swingx.common.ComponentTableModel;import org.jdesktop.demo.swingx.common.ComponentTreeTableModel;import org.jdesktop.demo.swingx.common.XYComparator;import org.jdesktop.swingx.JXPanel;import org.jdesktop.swingx.JXRadioGroup;import org.jdesktop.swingx.JXTable;import org.jdesktop.swingx.JXTreeTable;import org.jdesktop.swingx.decorator.AlternateRowHighlighter;import org.jdesktop.swingx.decorator.Highlighter;import org.jdesktop.swingx.decorator.HighlighterPipeline;import com.jgoodies.forms.builder.PanelBuilder;import com.jgoodies.forms.factories.Borders;import com.jgoodies.forms.layout.CellConstraints;import com.jgoodies.forms.layout.FormLayout;/** * Demonstrates the JXTable/TreeTable components * * @author Jeanette Winzenburg */public class JXTableDemoPanel extends DemoPanel { // ----------------- demo components private JXTable table; private JXTreeTable treeTable; // ---------------- demo models private ComponentTreeTableModel treeTableModel; private ComponentTableModel tableModel; // ----------------- demo decorators private Highlighter currentHighlighter; private String currentHighlighterKey; private String currentComparatorKey; // ---------------- controlling components/models private JComboBox highlighterCombo; private Map highlighterMap; private ArrayList highlighterKeys; private JLabel highlighterLabel; private JXRadioGroup sorterGroup; private JLabel sorterGroupLabel; private HashMap comparatorMap; private ArrayList comparatorKeys; /** Creates new form JXTableDemoPanel */ public JXTableDemoPanel() { setName("JXTable Demo"); initDemoModels(); initDecorators(); initComponents(); configureComponents(); build(); bind(); } private void bind() { // setting tree/table models manually treeTable.setTreeTableModel(treeTableModel); table.setModel(tableModel); // use binding for control panel interaction BindingHandler bindings = new BindingHandler(); bindings.setAutoCommit(true); bindHighlighterControl(bindings); bindings.pull(); } private void bindHighlighterControl(BindingHandler bindings) { // Enumeration not working correctly with classes // different from string (?) JavaBeanDataModel dataModel = null; try { EnumeratedMetaData highlighterMeta = new EnumeratedMetaData("highlighterKey", String.class, "Highlighter"); highlighterMeta.setEnumeration(getHighlighterKeys()); EnumeratedMetaData comparatorMeta = new EnumeratedMetaData("comparatorKey", String.class, "Sorter"); comparatorMeta.setEnumeration(getComparatorKeys()); dataModel = new JavaBeanDataModel(getClass(), this, new MetaData[] { highlighterMeta, comparatorMeta }); } catch (IntrospectionException e) { // TODO Auto-generated catch block e.printStackTrace(); } bindings.add(BindingFactory.getInstance().createBinding( highlighterCombo, dataModel, "highlighterKey")); bindings.add(BindingFactory.getInstance().createMetaBinding( highlighterLabel, dataModel, "highlighterKey")); bindings.add(BindingFactory.getInstance().createBinding( sorterGroup, dataModel, "comparatorKey")); bindings.add(BindingFactory.getInstance().createMetaBinding( sorterGroupLabel, dataModel, "comparatorKey")); } // ------------------------ control find modus /** * PRE: getFindModi() contains value. */ public void setHighlighterKey(String value) {// if (value.equals(getFindModus()))// return; Object old = getHighlighterKey(); this.currentHighlighterKey = value; updateHighlighter(old, value); firePropertyChange("highlighterKey", old, getHighlighterKey()); } /** * returns the current find modus. * * @return */ public String getHighlighterKey() { return currentHighlighterKey; } /** * returns array of available find modi. * * @return */ public String[] getHighlighterKeys() { // @todo: return copy! return (String[] )highlighterKeys.toArray(new String[0]); } private void updateHighlighter(Object oldHighlighterKey, Object highlighterKey) { Highlighter oldHighlighter = (Highlighter) highlighterMap.get(oldHighlighterKey); if (oldHighlighter != null) { table.getHighlighters().removeHighlighter(oldHighlighter); } Highlighter highlighter = (Highlighter) highlighterMap.get(highlighterKey); if (highlighter != null) { table.getHighlighters().addHighlighter(highlighter); } // repaint(); } public void setComparatorKey(String value) { Object old = getComparatorKey(); this.currentComparatorKey = value; updateComparator(value); firePropertyChange("comparatorKey", old, getComparatorKey()); } private void updateComparator(String value) { Comparator comparator = (Comparator) comparatorMap.get(value); // use a custom interactive sorter for the size column table.getColumnExt("Size").getSorter().setComparator(comparator); } public String getComparatorKey() { return currentComparatorKey; } public String[] getComparatorKeys() { return (String[]) comparatorKeys.toArray(new String[0]); } private void initDecorators() { highlighterMap = new HashMap(); highlighterMap.put("ledgerBackground", Highlighter.ledgerBackground);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -