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

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

?? joutlookbar.java

?? java swing控件
?? JAVA
字號:
/**
 * L2FProd.com Common Components 6.9.1 License.
 *
 * Copyright 2005-2006 L2FProd.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.l2fprod.common.swing;

import com.l2fprod.common.swing.plaf.JOutlookBarAddon;
import com.l2fprod.common.swing.plaf.LookAndFeelAddons;
import com.l2fprod.common.swing.plaf.OutlookBarUI;

import java.awt.Color;
import java.awt.Component;
import java.util.Iterator;
import java.util.Map;
import java.util.WeakHashMap;

import javax.swing.Icon;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.plaf.TabbedPaneUI;

/**
 * <code>JOutlookBar</code> brings the famous Outlook component to
 * Swing. The component shows stacks of components where only one
 * stack is visible at a time. <br>
 * 
 * The tab orientation of the {@link javax.swing.JTabbedPane}is
 * mapped to the JOutlookBar orientation as follow:
 * <ul>
 * <li>with JTabbedPane.TOP or JTabbedPane.BOTTOM, JOutlookBar will
 * layout the components horizontally
 * <li>with JTabbedPane.LEFT or JTabbedPane.RIGHT, JOutlookBar will
 * layout the components vertically (default)
 * </ul>
 * 
 * @javabean.class
 *          name="JOutlookBar"
 *          shortDescription="JOutlookBar brings the famous Outlook component to Swing"
 *          stopClass="javax.swing.JTabbedPane"
 * 
 * @javabean.icons
 *          mono16="JOutlookBar16-mono.gif"
 *          color16="JOutlookBar16.gif"
 *          mono32="JOutlookBar32-mono.gif"
 *          color32="JOutlookBar32.gif"
 */
public class JOutlookBar extends JTabbedPane {

  public static final String UI_CLASS_ID = "OutlookBarUI";
  
  static {
    LookAndFeelAddons.contribute(new JOutlookBarAddon());
  }

  /**
   * Used when generating PropertyChangeEvents for the "animated" property
   */
  public static final String ANIMATED_CHANGED_KEY = "animated";

  protected Map extendedPages;
  private boolean animated = true;
  
  /**
   *  
   */
  public JOutlookBar() {
    this(LEFT);
  }

  /**
   * @param tabPlacement
   */
  public JOutlookBar(int tabPlacement) {
    super(tabPlacement, WRAP_TAB_LAYOUT);
    extendedPages = new WeakHashMap();
    updateUI();
  }

  /**
   * Notification from the <code>UIManager</code> that the L&F has
   * changed. Replaces the current UI object with the latest version
   * from the <code>UIManager</code>.
   * 
   * @see javax.swing.JComponent#updateUI
   */
  public void updateUI() {
    setUI((OutlookBarUI)LookAndFeelAddons.getUI(this, OutlookBarUI.class));
  }

  /**
   * Sets the L&F object that renders this component.
   * 
   * @param ui the <code>OutlookBarUI</code> L&F object
   * @see javax.swing.UIDefaults#getUI
   * 
   * @beaninfo bound: true hidden: true description: The UI object
   *           that implements the buttonbar's LookAndFeel.
   */
  public void setUI(OutlookBarUI ui) {
    super.setUI((TabbedPaneUI)ui);
  }

  /**
   * Returns the name of the L&F class that renders this component.
   * 
   * @return the string {@link #UI_CLASS_ID}
   * @see javax.swing.JComponent#getUIClassID
   * @see javax.swing.UIDefaults#getUI
   */
  public String getUIClassID() {
    return UI_CLASS_ID;
  }

  /**
   * Enables or disables animation during tab transition.
   * 
   * @param animated
   * @javabean.property
   *          bound="true"
   *          preferred="true"
   */
  public void setAnimated(boolean animated) {
    if (this.animated != animated) {
      this.animated = animated;
      firePropertyChange(ANIMATED_CHANGED_KEY, !animated, animated);
    }
  }
  
  /**
   * @return true if this taskpane is animated during expand/collapse
   *         transition.
   */
  public boolean isAnimated() {
    return animated;
  }

  /**
   * Builds a JScrollPane to hold the component. By default tabs are
   * not scrollable. They can be made scrollable by putting them in a
   * JScrollPane and adding the JScrollPane instead of the tab to the
   * JOutlookBar. It is recommended to use this method to create the
   * scrollbar as the UI may choose to return a JScrollPane specially
   * configured for the JOutlookBar component (ex. with different
   * scrollbars)
   * 
   * @param component
   * @return a JScrollPane with <code>component</code> as view
   */
  public JScrollPane makeScrollPane(Component component) {
    return ((OutlookBarUI)getUI()).makeScrollPane(component);
  }

  public void removeTabAt(int index) {
    checkIndex(index);
    removeExtendedPage(index);
    super.removeTabAt(index);
  }
  
  /**
   * Sets the title alignment for all tabs
   * 
   * @param alignment
   *          one of {@link javax.swing.SwingConstants#LEFT},
   *          {@link javax.swing.SwingConstants#CENTER},
   *          {@link javax.swing.SwingConstants#RIGHT}.
   */
  public void setAllTabsAlignment(int alignment) {
    for (Iterator iter = extendedPages.values().iterator(); iter.hasNext();) {
      ExtendedPage page = (ExtendedPage)iter.next();
      page.setTabAlignment(alignment);
    }
  }
  
  /**
   * Sets the title alignment of the tab at <code>index</code>
   * 
   * @param index
   * @param alignment
   *          one of {@link javax.swing.SwingConstants#LEFT},
   *          {@link javax.swing.SwingConstants#CENTER},
   *          {@link javax.swing.SwingConstants#RIGHT}.
   */
  public void setAlignmentAt(int index, int alignment) {
    getExtendedPage(index).setTabAlignment(alignment);
  }
  
  /**
   * @param index
   * @return the title alignment of the tab at <code>index</code>
   */
  public int getAlignmentAt(int index) {
    return getExtendedPage(index).getTabAlignment();   
  }

  /**
   * Overriden to notify the UI about the change
   */
  public void setTitleAt(int index, String title) {
    super.setTitleAt(index, title);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }

  /**
   * Overriden to notify the UI about the change
   */
  public void setIconAt(int index, Icon icon) {
    super.setIconAt(index, icon);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }

  public Color getBackgroundAt(int index) {
    return getExtendedPage(index).getBackground();
  }
  
  /**
   * Overriden to notify the UI about the change
   */
  public void setBackgroundAt(int index, Color background) {
    getExtendedPage(index).setBackground(background);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }

  public Color getForegroundAt(int index) {
    return getExtendedPage(index).getForeground();
  }
  
  /**
   * Overriden to notify the UI about the change
   */
  public void setForegroundAt(int index, Color foreground) {
    getExtendedPage(index).setForeground(foreground);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }

  /**
   * Overriden to notify the UI about the change
   */
  public void setToolTipTextAt(int index, String toolTipText) {
    super.setToolTipTextAt(index, toolTipText);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }

  /**
   * Overriden to notify the UI about the change
   */
  public void setDisplayedMnemonicIndexAt(int tabIndex, int mnemonicIndex) {
    super.setDisplayedMnemonicIndexAt(tabIndex, mnemonicIndex);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(tabIndex));
  }

  /**
   * Overriden to notify the UI about the change
   */
  public void setMnemonicAt(int index, int mnemonic) {
    super.setMnemonicAt(index, mnemonic);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }

  /**
   * Overriden to notify the UI about the change
   */
  public void setDisabledIconAt(int index, Icon disabledIcon) {
    super.setDisabledIconAt(index, disabledIcon);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }
  
  /**
   * Overriden to notify the UI about the change
   */
  public void setEnabledAt(int index, boolean enabled) {
    super.setEnabledAt(index, enabled);
    firePropertyChange("tabPropertyChangedAtIndex", null, new Integer(index));
  }
    
  protected void addImpl(Component comp, Object constraints, int index) {
    if (index != -1) {
      super.addImpl(comp, constraints, index);
    } else {
      // insertTab always add component at the end of the components array
      // however the look and feel classes of JOutlookBar expect the component
      // to be in the right order when it calls getComponents().
      // We must make sure the component gets inserted in the right place
      int pageIndex = indexOfComponent(comp);
      if (pageIndex == -1) {
        super.addImpl(comp, constraints, index);
      } else {
        // this is one of our component, attempt to insert it in the right
        // position
        super.addImpl(comp, constraints, pageIndex * 2);
      }
    }
  }
  
  protected void removeExtendedPage(int index) {
    Component component = getComponentAt(index);
    extendedPages.remove(component);
  }
  
  protected ExtendedPage getExtendedPage(int index) {
    checkIndex(index);

    Component component = getComponentAt(index);
    ExtendedPage page = (ExtendedPage)extendedPages.get(component);
    if (page == null) {
      page = new ExtendedPage();
      page.component = component;
      extendedPages.put(component, page);
    }
    return page;
  }

  private void checkIndex(int index) {
    if (index < 0 || index >= getTabCount()) {
      throw new IndexOutOfBoundsException(
      "Index: " + index + ", Tab count: " + getTabCount());
    }
  }

  private class ExtendedPage {
    Component component;

    int alignment = UIManager.getInt("OutlookBar.tabAlignment");
    Color background = null;
    Color foreground = null;
    
    public void setTabAlignment(int alignment) {
      if (this.alignment != alignment) {
        this.alignment = alignment;
        JOutlookBar.this.firePropertyChange("tabPropertyChangedAtIndex", null,
          new Integer(getIndex()));
      }
    }
    
    public int getIndex() {
      return indexOfComponent(component);
    }
    
    public int getTabAlignment() {
      return alignment;
    }

    public Color getBackground() {
      return background;
    }

    public void setBackground(Color background) {
      this.background = background;
    }

    public Color getForeground() {
      return foreground;
    }

    public void setForeground(Color foreground) {
      this.foreground = foreground;
    }
        
  }
  
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费视频一区二区| **性色生活片久久毛片| 亚洲成人免费电影| 91极品美女在线| 亚洲一级片在线观看| 在线观看免费亚洲| 蜜臀99久久精品久久久久久软件| 欧美人妇做爰xxxⅹ性高电影| 亚洲va国产va欧美va观看| 欧美三级一区二区| 蜜芽一区二区三区| 久久噜噜亚洲综合| 91麻豆自制传媒国产之光| 艳妇臀荡乳欲伦亚洲一区| 欧美精品久久一区二区三区| 日韩黄色一级片| 国产欧美久久久精品影院| 99热在这里有精品免费| 图片区日韩欧美亚洲| 久久综合九色综合97_久久久| 97久久精品人人爽人人爽蜜臀| 亚洲乱码中文字幕综合| 欧美电影免费观看完整版| 一本色道久久综合亚洲aⅴ蜜桃 | 99久久伊人精品| 日韩电影在线观看电影| 久久久亚洲午夜电影| 欧美探花视频资源| 99久久99久久精品免费观看| 激情五月播播久久久精品| 亚洲在线视频网站| 亚洲三级免费观看| 久久精品一区二区三区不卡| 欧美猛男超大videosgay| 成人黄色国产精品网站大全在线免费观看 | 激情六月婷婷久久| 亚洲人成网站在线| 欧美经典一区二区| 精品欧美久久久| 欧美日韩国产在线播放网站| 在线免费观看日韩欧美| 91一区二区在线| 国产99精品视频| 高清成人在线观看| 国产丶欧美丶日本不卡视频| 蜜桃精品视频在线观看| 日本成人在线一区| 捆绑紧缚一区二区三区视频| 日本特黄久久久高潮| 麻豆传媒一区二区三区| 日韩电影一区二区三区四区| 免费在线看一区| 国产精品亚洲第一区在线暖暖韩国| 国产一区啦啦啦在线观看| 成人一区二区三区视频在线观看| 国产成人精品三级麻豆| 99久久久无码国产精品| 色婷婷亚洲精品| 欧美一区二区三区小说| 国产亚洲精品7777| 国产精品高清亚洲| 婷婷激情综合网| 成人不卡免费av| 欧美午夜不卡在线观看免费| 538prom精品视频线放| 国产亚洲欧美激情| 亚洲一区精品在线| 国产精品综合久久| 欧美日韩午夜在线| 国产精品亲子乱子伦xxxx裸| 亚洲一区影音先锋| 国产在线精品免费av| 欧美三级韩国三级日本一级| 国产欧美精品一区aⅴ影院| 亚洲国产精品一区二区久久| 成人国产精品免费观看动漫| 777精品伊人久久久久大香线蕉| 国产日韩欧美一区二区三区综合| 亚洲国产综合91精品麻豆| 99久久er热在这里只有精品66| 日韩你懂的在线播放| 一区二区三区精品视频在线| 国产成人午夜高潮毛片| 欧美一区在线视频| 亚洲成人动漫在线免费观看| 91性感美女视频| 国产精品美女www爽爽爽| 精品中文字幕一区二区小辣椒| 欧美色视频在线观看| 亚洲综合视频在线| 日本韩国视频一区二区| 亚洲青青青在线视频| 91麻豆免费看片| 亚洲欧美色一区| 一区二区三区在线影院| 精品国产1区二区| 国产欧美一区视频| 99久久综合狠狠综合久久| 国产成人亚洲精品青草天美| 另类小说视频一区二区| 国产日韩欧美高清在线| 一本在线高清不卡dvd| 中文字幕欧美国产| 日韩电影在线观看一区| 精品乱人伦小说| 在线观看区一区二| 欧美二区三区91| 久久久久久久电影| 国产精品伦一区二区三级视频| 亚洲欧美另类小说| 午夜视频一区二区| 国产91丝袜在线18| 欧美日韩精品一区视频| 久久综合久久综合久久综合| 亚洲三级在线看| 狠狠网亚洲精品| 精品国产91久久久久久久妲己 | 欧美电视剧免费全集观看| 久久久久99精品一区| 亚洲欧美日韩一区二区三区在线观看| 亚洲成av人片在www色猫咪| 精品在线一区二区三区| 成人av在线播放网址| 宅男在线国产精品| 亚洲欧洲日韩av| 国产一区激情在线| 欧美性色综合网| 蜜桃精品视频在线观看| 日本sm残虐另类| 成人午夜激情在线| 欧美精品日韩一本| 成人蜜臀av电影| 欧美日韩一区二区不卡| 1000精品久久久久久久久| 91精品蜜臀在线一区尤物| 亚洲国产经典视频| 一区二区三区四区不卡在线 | 亚洲一区二区三区四区在线| 精品噜噜噜噜久久久久久久久试看 | eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 成人午夜视频免费看| 午夜精品福利一区二区蜜股av| 亚洲一区二区精品3399| 久久久影院官网| 中文字幕在线不卡一区| 麻豆精品一区二区综合av| 国产在线视视频有精品| 欧美一区二区三区视频在线观看| 国产精品麻豆久久久| 一区二区三区在线不卡| 亚洲精选在线视频| 成人在线综合网| 久久影院午夜片一区| 亚洲国产精华液网站w| 精品伊人久久久久7777人| 国产综合色视频| 91精品婷婷国产综合久久性色| 一级精品视频在线观看宜春院 | 国产精品一区免费在线观看| 国精品**一区二区三区在线蜜桃| 国产精品亚洲а∨天堂免在线| 日韩欧美中文一区二区| 婷婷六月综合网| 91精品国产综合久久小美女| 午夜久久久久久久久久一区二区| 欧美日韩国产影片| 亚洲成av人片一区二区梦乃| 欧美麻豆精品久久久久久| 婷婷丁香久久五月婷婷| 欧美精品久久天天躁| 奇米精品一区二区三区在线观看一| 日本中文一区二区三区| 成人免费va视频| 18欧美乱大交hd1984| 精品亚洲国产成人av制服丝袜| 欧美一二三四在线| 国内不卡的二区三区中文字幕| 久久网这里都是精品| 亚洲高清免费观看高清完整版在线观看 | 国产精品国产三级国产a| 亚洲小少妇裸体bbw| 欧美电影一区二区| 老司机精品视频线观看86 | 国产精品电影一区二区| 99这里只有久久精品视频| 欧美精选一区二区| 蜜桃一区二区三区在线观看| xfplay精品久久| 国产成人aaa| 尤物在线观看一区| 国产成人在线观看免费网站| 亚洲精品在线三区| 欧美中文一区二区三区| 国产自产视频一区二区三区| 91麻豆精品国产| 九九视频精品免费| 在线播放91灌醉迷j高跟美女| 久久青草欧美一区二区三区| 一级特黄大欧美久久久| 欧美精品电影在线播放|