java类javax.swing.tree.TreeCellRenderer的实例源码

JTreeTest.java 文件源码 项目:cn1 阅读 30 收藏 0 点赞 0 评论 0
public void testSetCellRenderer() {
    PropertyChangeController listener = new PropertyChangeController();
    TreeCellRenderer renderer1 = new DefaultTreeCellRenderer();
    TreeCellRenderer renderer2 = new DefaultTreeCellRenderer();
    tree.addPropertyChangeListener(listener);
    TreeCellRenderer oldRenderer = tree.getCellRenderer();
    tree.setCellRenderer(renderer1);
    listener.checkPropertyFired(tree, "cellRenderer", oldRenderer, renderer1);
    assertEquals("cellRenderer", renderer1, tree.getCellRenderer());
    listener.reset();
    tree.setCellRenderer(renderer2);
    listener.checkPropertyFired(tree, "cellRenderer", renderer1, renderer2);
    assertEquals("cellRenderer", renderer2, tree.getCellRenderer());
    listener.reset();
    tree.setCellRenderer(renderer2);
    assertFalse("event's not been fired ", listener.isChanged());
    listener.reset();
    tree.setCellRenderer(null);
    listener.checkPropertyFired(tree, "cellRenderer", renderer2, null);
    // it's being controlled by UI via listener
    assertNotNull("cellRenderer", tree.getCellRenderer());
    assertNotSame("cellRenderer", oldRenderer, tree.getCellRenderer());
    assertNotSame("cellRenderer", renderer2, tree.getCellRenderer());
    listener.reset();
}
BasicTreeUI.java 文件源码 项目:JamVM-PH 阅读 21 收藏 0 点赞 0 评论 0
/**
  * Sets the TreeCellRenderer to <code>tcr</code>. This invokes
  * <code>updateRenderer</code>.
  * 
  * @param tcr is the new TreeCellRenderer.
  */
 protected void setCellRenderer(TreeCellRenderer tcr)
 {
   // Finish editing before changing the renderer.
   completeEditing();

   // The renderer is set in updateRenderer.
   updateRenderer();

   // Refresh the layout if necessary.
   if (treeState != null)
     {
treeState.invalidateSizes();
updateSize();
     }
 }
BasicTreeUI.java 文件源码 项目:JamVM-PH 阅读 20 收藏 0 点赞 0 评论 0
/**
 * Paints the renderer part of a row. The receiver should NOT modify
 * clipBounds, or insets.
 * 
 * @param g - the graphics configuration
 * @param clipBounds -
 * @param insets -
 * @param bounds - bounds of expand control
 * @param path - path to draw control for
 * @param row - row to draw control for
 * @param isExpanded - is the row expanded
 * @param hasBeenExpanded - has the row already been expanded
 * @param isLeaf - is the path a leaf
 */
protected void paintRow(Graphics g, Rectangle clipBounds, Insets insets,
                        Rectangle bounds, TreePath path, int row,
                        boolean isExpanded, boolean hasBeenExpanded,
                        boolean isLeaf)
{
  boolean selected = tree.isPathSelected(path);
  boolean hasIcons = false;
  Object node = path.getLastPathComponent();

  paintExpandControl(g, clipBounds, insets, bounds, path, row, isExpanded,
                     hasBeenExpanded, isLeaf);

  TreeCellRenderer dtcr = currentCellRenderer;

  boolean focused = false;
  if (treeSelectionModel != null)
    focused = treeSelectionModel.getLeadSelectionRow() == row
              && tree.isFocusOwner();

  Component c = dtcr.getTreeCellRendererComponent(tree, node, selected,
                                                  isExpanded, isLeaf, row,
                                                  focused);

  rendererPane.paintComponent(g, c, c.getParent(), bounds);
}
JTreeTable.java 文件源码 项目:libreveris 阅读 19 收藏 0 点赞 0 评论 0
/**
 * updateUI is overridden to set the colors of the Tree's renderer to
 * match that of the table.
 */
@Override
public void updateUI ()
{
    super.updateUI();

    // Make the tree's cell renderer use the table's cell selection
    // colors.
    TreeCellRenderer tcr = getCellRenderer();

    if (tcr instanceof DefaultTreeCellRenderer) {
        DefaultTreeCellRenderer dtcr = ((DefaultTreeCellRenderer) tcr);

        // For 1.1 uncomment this, 1.2 has a bug that will cause an
        // exception to be thrown if the border selection color is
        // null.
        dtcr.setBorderSelectionColor(null);
        dtcr.setTextSelectionColor(
                UIManager.getColor("Table.selectionForeground"));
        dtcr.setBackgroundSelectionColor(
                UIManager.getColor("Table.selectionBackground"));
    }
}
TreeTableView.java 文件源码 项目:tools-idea 阅读 24 收藏 0 点赞 0 评论 0
public TreeTableView(ListTreeTableModelOnColumns treeTableModel) {
  super(treeTableModel);
  setRootVisible(false);

  setTreeCellRenderer(new TreeCellRenderer() {
    private final TreeCellRenderer myBaseRenderer = new HighlightableCellRenderer();
    public Component getTreeCellRendererComponent(JTree tree1,
                                                  Object value,
                                                  boolean selected,
                                                  boolean expanded,
                                                  boolean leaf,
                                                  int row,
                                                  boolean hasFocus) {
      JComponent result = (JComponent)myBaseRenderer.getTreeCellRendererComponent(tree1, value, selected, expanded, leaf, row, hasFocus);
      result.setOpaque(!selected);
      return result;
    }
  });

  setSizes();
}
TreeExpandableItemsHandler.java 文件源码 项目:tools-idea 阅读 19 收藏 0 点赞 0 评论 0
protected Pair<Component, Rectangle> getCellRendererAndBounds(Integer key) {
  int rowIndex = key.intValue();

  TreePath path = myComponent.getPathForRow(rowIndex);
  if (path == null) return null;

  Rectangle bounds = myComponent.getPathBounds(path);
  if (bounds == null) return null;

  TreeCellRenderer renderer = myComponent.getCellRenderer();
  if (renderer == null) return null;

  Object node = path.getLastPathComponent();
  Component rendererComponent = renderer.getTreeCellRendererComponent(
    myComponent,
    node,
    myComponent.isRowSelected(rowIndex),
    myComponent.isExpanded(rowIndex),
    myComponent.getModel().isLeaf(node),
    rowIndex,
    myComponent.hasFocus()
  );
  return Pair.create(rendererComponent, bounds);
}
BasicTreeUI.java 文件源码 项目:classpath 阅读 19 收藏 0 点赞 0 评论 0
/**
 * Sets the TreeCellRenderer to <code>tcr</code>. This invokes
 * <code>updateRenderer</code>.
 *
 * @param tcr is the new TreeCellRenderer.
 */
protected void setCellRenderer(TreeCellRenderer tcr)
{
  // Finish editing before changing the renderer.
  completeEditing();

  // The renderer is set in updateRenderer.
  updateRenderer();

  // Refresh the layout if necessary.
  if (treeState != null)
    {
      treeState.invalidateSizes();
      updateSize();
    }
}
BasicTreeUI.java 文件源码 项目:classpath 阅读 21 收藏 0 点赞 0 评论 0
/**
 * Paints the renderer part of a row. The receiver should NOT modify
 * clipBounds, or insets.
 *
 * @param g - the graphics configuration
 * @param clipBounds -
 * @param insets -
 * @param bounds - bounds of expand control
 * @param path - path to draw control for
 * @param row - row to draw control for
 * @param isExpanded - is the row expanded
 * @param hasBeenExpanded - has the row already been expanded
 * @param isLeaf - is the path a leaf
 */
protected void paintRow(Graphics g, Rectangle clipBounds, Insets insets,
                        Rectangle bounds, TreePath path, int row,
                        boolean isExpanded, boolean hasBeenExpanded,
                        boolean isLeaf)
{
  boolean selected = tree.isPathSelected(path);
  boolean hasIcons = false;
  Object node = path.getLastPathComponent();

  paintExpandControl(g, clipBounds, insets, bounds, path, row, isExpanded,
                     hasBeenExpanded, isLeaf);

  TreeCellRenderer dtcr = currentCellRenderer;

  boolean focused = false;
  if (treeSelectionModel != null)
    focused = treeSelectionModel.getLeadSelectionRow() == row
              && tree.isFocusOwner();

  Component c = dtcr.getTreeCellRendererComponent(tree, node, selected,
                                                  isExpanded, isLeaf, row,
                                                  focused);

  rendererPane.paintComponent(g, c, c.getParent(), bounds);
}
BasicTreeUI.java 文件源码 项目:freeVM 阅读 29 收藏 0 点赞 0 评论 0
public void propertyChange(final PropertyChangeEvent e) {
    String changedProperty = e.getPropertyName();
    if (JTree.CELL_RENDERER_PROPERTY.equals(changedProperty)) {
        setCellRenderer((TreeCellRenderer)e.getNewValue());
    } else if (JTree.CELL_EDITOR_PROPERTY.equals(changedProperty)) {
        setCellEditor((TreeCellEditor)e.getNewValue());
    } else if (JTree.TREE_MODEL_PROPERTY.equals(changedProperty)) {
        setModel((TreeModel)e.getNewValue());
    } else if (JTree.ROOT_VISIBLE_PROPERTY.equals(changedProperty)) {
        setRootVisible(((Boolean)e.getNewValue()).booleanValue());
    } else if (JTree.SHOWS_ROOT_HANDLES_PROPERTY.equals(changedProperty)) {
        setShowsRootHandles(((Boolean)e.getNewValue()).booleanValue());
    } else if (JTree.ROW_HEIGHT_PROPERTY.equals(changedProperty)) {
        setRowHeight(((Integer)e.getNewValue()).intValue());
    } else if (JTree.EDITABLE_PROPERTY.equals(changedProperty)) {
        setEditable(((Boolean)e.getNewValue()).booleanValue());
    } else if (JTree.LARGE_MODEL_PROPERTY.equals(changedProperty)) {
        setLargeModel(((Boolean)e.getNewValue()).booleanValue());
    } else if (JTree.SELECTION_MODEL_PROPERTY.equals(changedProperty)) {
        setSelectionModel((TreeSelectionModel)e.getNewValue());
    } else if (JTree.LEAD_SELECTION_PATH_PROPERTY.equals(changedProperty)) {
        TreePath leadPath = (TreePath)e.getNewValue();
        lastSelectedRow = leadPath != null ? tree.getRowForPath(leadPath) : -1;
    }
}
JTreeTest.java 文件源码 项目:freeVM 阅读 37 收藏 0 点赞 0 评论 0
public void testSetCellRenderer() {
    PropertyChangeController listener = new PropertyChangeController();
    TreeCellRenderer renderer1 = new DefaultTreeCellRenderer();
    TreeCellRenderer renderer2 = new DefaultTreeCellRenderer();
    tree.addPropertyChangeListener(listener);
    TreeCellRenderer oldRenderer = tree.getCellRenderer();
    tree.setCellRenderer(renderer1);
    listener.checkPropertyFired(tree, "cellRenderer", oldRenderer, renderer1);
    assertEquals("cellRenderer", renderer1, tree.getCellRenderer());
    listener.reset();
    tree.setCellRenderer(renderer2);
    listener.checkPropertyFired(tree, "cellRenderer", renderer1, renderer2);
    assertEquals("cellRenderer", renderer2, tree.getCellRenderer());
    listener.reset();
    tree.setCellRenderer(renderer2);
    assertFalse("event's not been fired ", listener.isChanged());
    listener.reset();
    tree.setCellRenderer(null);
    listener.checkPropertyFired(tree, "cellRenderer", renderer2, null);
    // it's being controlled by UI via listener
    assertNotNull("cellRenderer", tree.getCellRenderer());
    assertNotSame("cellRenderer", oldRenderer, tree.getCellRenderer());
    assertNotSame("cellRenderer", renderer2, tree.getCellRenderer());
    listener.reset();
}


问题


面经


文章

微信
公众号

扫码关注公众号