0

ここからスイングコンポーネントを使用してツリーテーブルを作成するチュートリアルを見つけました。動的にフィードするように少し変更しました。その時点で、テーブルとツリーの行に目的のテキストを入力できます。今、私はそれを調べて使用したいと思います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

}

}

4

0 に答える 0