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

📄 tablemodeladapter.java

📁 world wind java sdk 源码
💻 JAVA
字号:
/*
Copyright (C) 2001, 2008 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.applications.gio.catalogui.treetable;

import gov.nasa.worldwind.util.Logging;

import javax.swing.*;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.tree.TreePath;

/**
 * @author dcollins
 * @version $Id: TableModelAdapter.java 5517 2008-07-15 23:36:34Z dcollins $
 */
public class TableModelAdapter extends AbstractTableModel
{
    private TreeTableModel treeTableModel;
    private JTree tree;

    public TableModelAdapter(TreeTableModel treeTableModel, JTree tree)
    {
        if (treeTableModel == null)
        {
            String message = "nullValue.TreeTableModelIsNull";
            Logging.logger().severe(message);
            throw new IllegalArgumentException(message);
        }
        if (tree == null)
        {
            String message = "nullValue.TreeIsNull";
            Logging.logger().severe(message);
            throw new IllegalArgumentException(message);
        }

        this.treeTableModel = treeTableModel;
        this.tree = tree;

        // Installs a TreeModelListener that can update the table when
        // the tree changes. We use delayedFireTableDataChanged as we can
        // not be guaranteed the tree will have finished processing
        // the event before us.
        treeTableModel.addTreeTableModelListener(new TreeTableModelListener()
        {
            public void treeTableNodesChanged(TreeTableModelEvent e)
            {
                delayedFireTableDataChanged();
            }

            public void treeTableNodesInserted(TreeTableModelEvent e)
            {
                delayedFireTableDataChanged();
            }

            public void treeTableNodesRemoved(TreeTableModelEvent e)
            {
                delayedFireTableDataChanged();
            }

            public void treeTableStructureChanged(TreeTableModelEvent e)
            {
                delayedFireTableStructureChanged();
            }

            public void treeTableHeaderChanged(TreeTableModelEvent e)
            {
                delayedFireTableStructureChanged();
            }
        });

        this.tree.addTreeExpansionListener(new TreeExpansionListener()
        {
            // Don't use fireTableRowsInserted() here; the selection model
            // would get updated twice.
            public void treeExpanded(TreeExpansionEvent event)
            {
                fireTableDataChanged();
            }

            public void treeCollapsed(TreeExpansionEvent event)
            {
                fireTableDataChanged();
            }
        });
    }

    public int getColumnCount()
    {
        return this.treeTableModel.getColumnCount();
    }

    public Class<?> getColumnClass(int columnIndex)
    {
        return this.treeTableModel.getColumnClass(columnIndex);
    }

    public String getColumnName(int columnIndex)
    {
        return this.treeTableModel.getColumnName(columnIndex);
    }

    public int getRowCount()
    {
        return this.tree.getRowCount();
    }

    public Object getValueAt(int rowIndex, int columnIndex)
    {
        return this.treeTableModel.getValueAt(nodeForRow(rowIndex), columnIndex);
    }

    public void setValueAt(Object aValue, int rowIndex, int columnIndex)
    {
        this.treeTableModel.setValueAt(aValue, nodeForRow(rowIndex), columnIndex);
    }

    public boolean isCellEditable(int rowIndex, int columnIndex)
    {
        return this.treeTableModel.isCellEditable(nodeForRow(rowIndex), columnIndex);
    }

    protected Object nodeForRow(int rowIndex)
    {
        TreePath treePath = this.tree.getPathForRow(rowIndex);
        return treePath != null ? treePath.getLastPathComponent() : null;
    }

    protected void delayedFireTableDataChanged()
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                fireTableDataChanged();
            }
        });
    }

    protected void delayedFireTableStructureChanged()
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                fireTableStructureChanged();
            }
        });
    }
}

⌨️ 快捷键说明

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