JTree JTable комбинация в Java

Я нашел учебник, который делает древовидную таблицу с использованием компонентов Swing отсюда. Я немного изменил его, чтобы динамически кормить. В то время как я могу кормить таблицы и строки дерева с желаемым текстом. Теперь я хочу изучить его и использовать setValueAt(Object value,int column,int row), Я хочу сравнить каждое название заголовка строки с именем заголовка столбца, и для каждого совпадения я хочу поместить некоторое значение в эту конкретную ячейку и изменить цвет. У вас есть предложения, как я могу это сделать? Я поставил 3 основных класса, которые, я думаю, должны быть изменены, чтобы получить функциональность сравнения столбцов и строк.

import javax.swing.tree.TreeModel;

public interface MyTreeTableModel extends TreeModel {


/**
 * Returns the number of available columns.
 * @return Number of Columns
 */
public int getColumnCount();

/**
 * Returns the column name.
 * @param column Column number
 * @return Column name
 */
public String getColumnName(int column);


/**
 * Returns the type (class) of a column.
 * @param column Column number
 * @return Class
 */
public Class<?> getColumnClass(int column);

/**
 * Returns the value of a node in a column.
 * @param node Node
 * @param column Column number
 * @return Value of the node in the column
 */
public Object getValueAt(Object node, int column);


/**
 * Check if a cell of a node in one column is editable.
 * @param node Node
 * @param column Column number
 * @return true/false
 */
public boolean isCellEditable(Object node, int column);

/**
 * Sets a value for a node in one column.
 * @param aValue New value
 * @param node Node
 * @param column Column number
 */
public void setValueAt(Object aValue, Object node, int column);
}

Второй класс

import java.awt.Rectangle;

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

public class MyTreeTableModelAdapter extends AbstractTableModel {

 JTree tree;
MyAbstractTreeTableModel treeTableModel;

public MyTreeTableModelAdapter(MyAbstractTreeTableModel treeTableModel, JTree tree) {
    this.tree = tree;
    this.treeTableModel = treeTableModel;

    tree.addTreeExpansionListener(new TreeExpansionListener() {
        public void treeExpanded(TreeExpansionEvent event) {
            fireTableDataChanged();
        }

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



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

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

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

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

protected Object nodeForRow(int row) {
    TreePath treePath = tree.getPathForRow(row);
    return treePath.getLastPathComponent();
}

public Object getValueAt(int row, int column) {
    return treeTableModel.getValueAt(nodeForRow(row), column);
}

public boolean isCellEditable(int row, int column) {
    return treeTableModel.isCellEditable(nodeForRow(row), column);
}

public void setValueAt(Object value, int row, int column) {
    treeTableModel.setValueAt(value, nodeForRow(row), column);
}
}

Третий класс

import java.awt.Dimension;

import javax.swing.JTable;
import javax.swing.ToolTipManager;

public class MyTreeTable extends JTable {
private MyTreeTableCellRenderer tree;
public MyTreeTable(){

}

public void expandTree(){
    for (int i = 0; i < tree.getRowCount(); i++) {
         tree.expandRow(i);
        }
}
public MyTreeTable(MyAbstractTreeTableModel treeTableModel) {
    super();

    //  set JTree.
    tree = new MyTreeTableCellRenderer(this, treeTableModel);
    ToolTipManager.sharedInstance().registerComponent(tree);

    setToolTipText("text");//ToolTip
    //expands all nodes at tree
      for (int i = 0; i < tree.getRowCount(); i++) {

          tree.expandRow(i);
            }
    // set model.
    super.setModel(new MyTreeTableModelAdapter(treeTableModel, tree));

    // select tree and table at the same time
    MyTreeTableSelectionModel selectionModel = new MyTreeTableSelectionModel();
    tree.setSelectionModel(selectionModel); // For the tree
    setSelectionModel(selectionModel.getListSelectionModel()); // For the table

    // Renderer for  Tree.
    setDefaultRenderer(MyTreeTableModel.class, tree);
    // Editor for  TreeTable
    setDefaultEditor(MyTreeTableModel.class, new MyTreeTableCellEditor(
            tree, this));

    //  Grid .
    setShowGrid(true);

    // no space
    setIntercellSpacing(new Dimension(0, 0));
    //setValueAt("jjjj", 0, 0); not working

}

}

0 ответов

Другие вопросы по тегам