亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? propertysheettable.java

?? java swing控件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
    switch (column) {
      case PropertySheetTableModel.NAME_COLUMN:
        // name column gets a custom renderer
        return nameRenderer;

      case PropertySheetTableModel.VALUE_COLUMN: {
        if (!item.isProperty())
          return nameRenderer;

        // property value column gets the renderer from the factory
        Property property = item.getProperty();
        TableCellRenderer renderer = getRendererFactory().createTableCellRenderer(property);
        if (renderer == null)
          renderer = getCellRenderer(property.getType());
        return renderer;
      }
      default:
        // when will this happen, given the above?
        return super.getCellRenderer(row, column);
    }
  }

  /**
   * Helper method to lookup a cell renderer based on type.
   * @param type the type for which a renderer should be found
   * @return a renderer for the given object type
   */
  private TableCellRenderer getCellRenderer(Class type) {
    // try to create one from the factory
    TableCellRenderer renderer = getRendererFactory().createTableCellRenderer(type);

    // if that fails, recursively try again with the superclass
    if (renderer == null && type != null)
      renderer = getCellRenderer(type.getSuperclass());

    // if that fails, just use the default Object renderer
    if (renderer == null)
      renderer = super.getDefaultRenderer(Object.class);

    return renderer;
  }

  public final PropertySheetTableModel getSheetModel() {
    return (PropertySheetTableModel) getModel();
  }

  /**
   * Overriden
   * <li>to prevent the cell focus rect to be painted
   * <li>to disable ({@link Component#setEnabled(boolean)} the renderer if the
   * Property is not editable
   */
  public Component prepareRenderer(TableCellRenderer renderer, int row,
    int column) {
    Object value = getValueAt(row, column);
    boolean isSelected = isCellSelected(row, column);
    Component component = renderer.getTableCellRendererComponent(this, value,
      isSelected, false, row, column);
    
    PropertySheetTableModel.Item item = getSheetModel()
      .getPropertySheetElement(row);
    if (item.isProperty()) {
      component.setEnabled(item.getProperty().isEditable());
    }
    return component;
  }

  /**
   * Overriden to register a listener on the model. This listener ensures
   * editing is cancelled when editing row is being changed.
   * 
   * @see javax.swing.JTable#setModel(javax.swing.table.TableModel)
   * @throws IllegalArgumentException
   *           if dataModel is not a {@link PropertySheetTableModel}
   */
  public void setModel(TableModel newModel) {
    if (!(newModel instanceof PropertySheetTableModel)) {
      throw new IllegalArgumentException("dataModel must be of type "
          + PropertySheetTableModel.class.getName());
    }

    if (cancelEditing == null) {
      cancelEditing = new CancelEditing();
    }

    TableModel oldModel = getModel();
    if (oldModel != null) {
      oldModel.removeTableModelListener(cancelEditing);
    }
    super.setModel(newModel);
    newModel.addTableModelListener(cancelEditing);

    // ensure the "value" column can not be resized
    getColumnModel().getColumn(1).setResizable(false);
  }

  /**
   * @see #setWantsExtraIndent(boolean)
   */
  public boolean getWantsExtraIndent() {
    return wantsExtraIndent;
  }

  /**
   * By default, properties with children are painted with the same indent level
   * as other properties and categories. When nested properties exist within the
   * set of properties, the end-user might be confused by the category and
   * property handles. Sets this property to true to add an extra indent level
   * to properties.
   * 
   * @param wantsExtraIndent
   */
  public void setWantsExtraIndent(boolean wantsExtraIndent) {
    this.wantsExtraIndent = wantsExtraIndent;
    repaint();
  }
  
  /**
   * Ensures the table uses the full height of its parent
   * {@link javax.swing.JViewport}.
   */
  public boolean getScrollableTracksViewportHeight() {
    return getPreferredSize().height < getParent().getHeight();
  }
  
  /**
   * Commits on-going cell editing 
   */
  public void commitEditing() {
    TableCellEditor editor = getCellEditor();
    if (editor != null) {
      editor.stopCellEditing();
    }    
  }

  /**
   * Cancels on-going cell editing 
   */
  public void cancelEditing() {
    TableCellEditor editor = getCellEditor();
    if (editor != null) {
      editor.cancelCellEditing();
    }    
  }

  /**
   * Cancels the cell editing if any update happens while modifying a value.
   */
  private class CancelEditing implements TableModelListener {
    public void tableChanged(TableModelEvent e) {
      // in case the table changes for the following reasons:
      // * the editing row has changed
      // * the editing row was removed
      // * all rows were changed
      // * rows were added
      //
      // it is better to cancel the editing of the row as our editor
      // may no longer be the right one. It happens when you play with
      // the sorting while having the focus in one editor.
      if (e.getType() == TableModelEvent.UPDATE) {
        int first = e.getFirstRow();
        int last = e.getLastRow();
        int editingRow = PropertySheetTable.this.getEditingRow();

        TableCellEditor editor = PropertySheetTable.this.getCellEditor();
        if (editor != null && first <= editingRow && editingRow <= last) {
          editor.cancelCellEditing();
        }
      }
    }
  }

  /**
   * Starts value cell editing even if value cell does not have the focus but
   * only if row is selected.
   */
  private static class StartEditingAction extends AbstractAction {
    public void actionPerformed(ActionEvent e) {
      JTable table = (JTable)e.getSource();
      if (!table.hasFocus()) {
        CellEditor cellEditor = table.getCellEditor();
        if (cellEditor != null && !cellEditor.stopCellEditing()) { return; }
        table.requestFocus();
        return;
      }
      ListSelectionModel rsm = table.getSelectionModel();
      int anchorRow = rsm.getAnchorSelectionIndex();
      table.editCellAt(anchorRow, PropertySheetTableModel.VALUE_COLUMN);
      Component editorComp = table.getEditorComponent();
      if (editorComp != null) {
        editorComp.requestFocus();
      }
    }
  }

  /**
   * Toggles the state of a row between expanded/collapsed. Works only for rows
   * with "toggle" knob.
   */
  private class ToggleAction extends AbstractAction {
    public void actionPerformed(ActionEvent e) {      
      int row = PropertySheetTable.this.getSelectedRow();
      Item item = PropertySheetTable.this.getSheetModel()
        .getPropertySheetElement(row);
      item.toggle();
      PropertySheetTable.this.addRowSelectionInterval(row, row);
    }
    public boolean isEnabled() {
      int row = PropertySheetTable.this.getSelectedRow();
      if (row != -1) {
        Item item = PropertySheetTable.this.getSheetModel()
          .getPropertySheetElement(row);        
        return item.hasToggle();
      } else {
        return false;
      }
    }
  }

  /**
   * @see ToggleAction
   */
  private static class ToggleMouseHandler extends MouseAdapter {
    public void mouseReleased(MouseEvent event) {
      PropertySheetTable table = (PropertySheetTable) event.getComponent();
      int row = table.rowAtPoint(event.getPoint());
      int column = table.columnAtPoint(event.getPoint());
      if (row != -1 && column == 0) {
        // if we clicked on an Item, see if we clicked on its hotspot
        Item item = table.getSheetModel().getPropertySheetElement(row);        
        int x = event.getX() - getIndent(table, item);
        if (x > 0 && x < HOTSPOT_SIZE)
          item.toggle();
      }
    }
  }

  /**
   * Calculates the required left indent for a given item, given its type and
   * its hierarchy level.
   */
  static int getIndent(PropertySheetTable table, Item item) {
    int indent = 0;
    
    if (item.isProperty()) {
      // it is a property, it has no parent or a category, and no child
      if ((item.getParent() == null || !item.getParent().isProperty())
        && !item.hasToggle()) {
        indent = table.getWantsExtraIndent()?HOTSPOT_SIZE:0;
      } else {
        // it is a property with children
        if (item.hasToggle()) {
          indent = item.getDepth() * HOTSPOT_SIZE;
        } else {          
          indent = (item.getDepth() + 1) * HOTSPOT_SIZE;
        }        
      }
      
      if (table.getSheetModel().getMode() == PropertySheet.VIEW_AS_CATEGORIES
        && table.getWantsExtraIndent()) {
        indent += HOTSPOT_SIZE;
      }

    } else {
      // category has no indent
      indent = 0;
    }    
    return indent;
  }
  
  /**
   * Paints the border around the name cell. It handles the indent from the left
   * side and the painting of the toggle knob.
   */
  private static class CellBorder implements Border {
    
    private int indentWidth; // space before hotspot
    private boolean showToggle;
    private boolean toggleState;
    private Icon expandedIcon = (Icon) UIManager.get(TREE_EXPANDED_ICON_KEY);
    private Icon collapsedIcon = (Icon) UIManager.get(TREE_COLLAPSED_ICON_KEY);
    private Insets insets = new Insets(1, 0, 1, 1);
    private boolean isProperty;
    
    public void configure(PropertySheetTable table, Item item) {      
      isProperty = item.isProperty();      
      toggleState =  item.isVisible();
      showToggle = item.hasToggle();
      
      indentWidth = getIndent(table, item);      
      insets.left = indentWidth + (showToggle?HOTSPOT_SIZE:0) + 2;;
    }
    
    public Insets getBorderInsets(Component c) {
      return insets;
    }

    public void paintBorder(Component c, Graphics g, int x, int y, int width,
        int height) {      
      if (!isProperty) {
        Color oldColor = g.getColor();      
        g.setColor(c.getBackground());
        g.fillRect(x, y, x + HOTSPOT_SIZE - 2, y + height);
        g.setColor(oldColor);
      }
      
      if (showToggle) {
        Icon drawIcon = (toggleState ? expandedIcon : collapsedIcon);
        drawIcon.paintIcon(c, g,
          x + indentWidth + (HOTSPOT_SIZE - 2 - drawIcon.getIconWidth()) / 2,
          y + (height - drawIcon.getIconHeight()) / 2);
      }
    }

    public boolean isBorderOpaque() {
      return true;
    }
    
  }

  /**
   * A {@link TableCellRenderer} for property names.
   */
  private class NameRenderer extends DefaultTableCellRenderer {

    private CellBorder border;
    
    public NameRenderer() {
      border = new CellBorder();
    }
    
    private Color getForeground(boolean isProperty, boolean isSelected) {
      return (isProperty ? (isSelected ? selectedPropertyForeground : propertyForeground) :
        (isSelected ? selectedCategoryForeground : categoryForeground));
    }

    private Color getBackground(boolean isProperty, boolean isSelected) {
      return (isProperty ? (isSelected ? selectedPropertyBackground : propertyBackground) :
        (isSelected ? selectedCategoryBackground : categoryBackground));
    }

    public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
      super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
      PropertySheetTableModel.Item item = (Item) value;

      // shortcut if we are painting the category column
      if (column == PropertySheetTableModel.VALUE_COLUMN && !item.isProperty()) {
        setBackground(getBackground(item.isProperty(), isSelected));
        setText("");
        return this;
      }
      
      setBorder(border);

      // configure the border
      border.configure((PropertySheetTable)table, item);
      
      setBackground(getBackground(item.isProperty(), isSelected));
      setForeground(getForeground(item.isProperty(), isSelected));
      
      setEnabled(isSelected || !item.isProperty() ? true : item.getProperty().isEditable());
      setText(item.getName());

      return this;
    }
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国三级日本三级久久99| 国产精品亚洲а∨天堂免在线| 欧美精品123区| 国产精品一区二区果冻传媒| 捆绑紧缚一区二区三区视频| 亚洲视频一二三区| 欧美本精品男人aⅴ天堂| 不卡在线观看av| 黄网站免费久久| 一区二区三区四区中文字幕| 一区二区三区久久久| 91精品在线免费| 9191久久久久久久久久久| 欧美精品一区二区三区在线| 国产精品免费看片| 免费精品视频在线| 国产成人免费视| 欧美日韩高清一区二区三区| 日韩视频在线观看一区二区| 一区视频在线播放| 奇米色一区二区| 波多野结衣精品在线| 欧美一级片免费看| 午夜伦欧美伦电影理论片| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩国产天堂| 日本一区二区综合亚洲| 极品少妇xxxx精品少妇| 欧美伊人久久大香线蕉综合69 | 国产精品乱人伦一区二区| 亚洲女厕所小便bbb| 成人短视频下载| 久久久久久久久久久黄色| 日韩高清中文字幕一区| 成人av电影免费在线播放| 欧美一区二区不卡视频| 亚洲成人激情社区| 欧美在线制服丝袜| 亚洲一区在线播放| 99在线精品一区二区三区| 欧美国产精品中文字幕| 国产精品小仙女| 中文字幕欧美国产| 成人免费高清视频在线观看| 国产偷国产偷精品高清尤物 | 菠萝蜜视频在线观看一区| 国产人伦精品一区二区| av亚洲产国偷v产偷v自拍| 亚洲免费观看高清在线观看| 国产成人午夜高潮毛片| 精品国产伦一区二区三区免费 | 精品久久久久久久一区二区蜜臀| 久久av资源站| 亚洲免费av观看| 精品久久久久久综合日本欧美| 国产成人一区二区精品非洲| 亚洲国产精品av| 欧美综合一区二区| 激情图片小说一区| 亚洲欧洲av另类| 777奇米四色成人影色区| av中文字幕一区| 国产乱妇无码大片在线观看| 亚洲理论在线观看| 国产色一区二区| 欧美日韩视频在线一区二区| 经典三级视频一区| 一区二区三区欧美久久| 国产无人区一区二区三区| 欧美一区二区不卡视频| 在线观看免费成人| av动漫一区二区| 国产一区二区精品久久99| 亚洲高清久久久| 亚洲三级小视频| 中文欧美字幕免费| 欧美激情综合五月色丁香小说| 久久夜色精品国产噜噜av| 欧美色图一区二区三区| 国产成a人无v码亚洲福利| 天天做天天摸天天爽国产一区 | 国产成人av自拍| 韩国欧美国产1区| 国产揄拍国内精品对白| 国产福利91精品一区二区三区| 日本美女一区二区三区视频| 日产欧产美韩系列久久99| 亚洲成人av资源| 亚洲一区二区精品久久av| 亚洲观看高清完整版在线观看 | 91片黄在线观看| 99久久综合色| 91麻豆精品国产| 国产人成一区二区三区影院| 国产精品天干天干在观线| 又紧又大又爽精品一区二区| 18欧美亚洲精品| 日韩av不卡在线观看| 国产成人8x视频一区二区| 欧美日韩你懂得| 国产午夜亚洲精品午夜鲁丝片| 中文幕一区二区三区久久蜜桃| 亚洲另类春色国产| 极品尤物av久久免费看| 欧美日韩综合色| 国产精品网站在线观看| 丝袜脚交一区二区| proumb性欧美在线观看| 欧美三级韩国三级日本三斤| 久久夜色精品国产噜噜av| 日韩电影免费在线观看网站| 91麻豆精品在线观看| 日韩天堂在线观看| 综合婷婷亚洲小说| 成人午夜免费av| 日韩欧美在线网站| 无码av免费一区二区三区试看 | 亚洲色图欧美在线| 极品少妇xxxx精品少妇| 日韩免费看的电影| 日韩精品一二三| 欧美日韩电影一区| 亚洲一区在线观看免费观看电影高清| 国产精选一区二区三区| 欧美精品一区二| 国产精品亚洲综合一区在线观看| 欧美大度的电影原声| 麻豆91免费观看| 日韩欧美一区电影| 久久国产夜色精品鲁鲁99| 日韩午夜三级在线| 国产盗摄一区二区三区| 国产欧美综合色| av在线不卡网| 樱桃国产成人精品视频| 欧美丰满嫩嫩电影| 国产精品99久久久久久似苏梦涵| 国产欧美一区二区三区鸳鸯浴 | 五月天激情综合网| 欧美一二三区精品| 国产精品一二三四五| 成人欧美一区二区三区| 欧美日韩免费一区二区三区| 美美哒免费高清在线观看视频一区二区| 91精品国产综合久久福利| 国产sm精品调教视频网站| 亚洲成av人片在线观看| 亚洲国产精品黑人久久久 | 中文字幕成人在线观看| 欧美日韩免费一区二区三区| 国产成人亚洲综合a∨猫咪| 亚洲国产成人tv| 国产精品免费av| 日韩精品一区在线观看| 色欧美日韩亚洲| 国产成人午夜片在线观看高清观看| 亚洲老妇xxxxxx| 中文字幕一区二区三区精华液| 精品免费国产一区二区三区四区| 色狠狠色狠狠综合| 97成人超碰视| 国产一区二区不卡老阿姨| 日日摸夜夜添夜夜添国产精品| 亚洲男人天堂av| 中文一区在线播放| 国产精品视频免费| 久久久欧美精品sm网站| 久久久噜噜噜久噜久久综合| 久久五月婷婷丁香社区| 91精品国产色综合久久| 日韩一区二区电影网| 欧美一区日韩一区| 日韩欧美的一区| 久久久国际精品| 国产精品全国免费观看高清| 欧美激情综合网| 一区二区三区免费看视频| 亚洲视频一二三| 蜜臀av性久久久久蜜臀aⅴ| 国产精品自拍三区| 精品伊人久久久久7777人| 成人午夜精品一区二区三区| 国产一区二区美女诱惑| 国产成人在线网站| 日本道色综合久久| 欧美日韩国产欧美日美国产精品| 欧美一级欧美一级在线播放| 久久久www成人免费毛片麻豆 | 国产大陆精品国产| 在线日韩一区二区| 久久久久久久一区| 丝袜亚洲精品中文字幕一区| 国产伦精品一区二区三区免费| 91免费在线播放| 久久综合色综合88| 亚洲一二三区在线观看| 国产精品123| 欧美一区二区在线视频| 国产精品色呦呦| 国产在线精品一区二区|