⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 synthtabbedpaneui.java

📁 JAVA 所有包
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                     new Rectangle(x, y, width, height));    }    protected void paintTabArea(SynthContext ss, Graphics g,                                int tabPlacement, int selectedIndex,                                Rectangle tabAreaBounds) {        Rectangle clipRect = g.getClipBounds();          // Paint the tab area.        SynthLookAndFeel.updateSubregion(ss, g, tabAreaBounds);        ss.getPainter().paintTabbedPaneTabAreaBackground(ss, g,             tabAreaBounds.x, tabAreaBounds.y, tabAreaBounds.width,             tabAreaBounds.height, tabPlacement);        ss.getPainter().paintTabbedPaneTabAreaBorder(ss, g, tabAreaBounds.x,             tabAreaBounds.y, tabAreaBounds.width, tabAreaBounds.height,             tabPlacement);        int tabCount = tabPane.getTabCount();        iconRect.setBounds(0, 0, 0, 0);        textRect.setBounds(0, 0, 0, 0);        // Paint tabRuns of tabs from back to front        for (int i = runCount - 1; i >= 0; i--) {            int start = tabRuns[i];            int next = tabRuns[(i == runCount - 1)? 0 : i + 1];            int end = (next != 0? next - 1: tabCount - 1);            for (int j = start; j <= end; j++) {                if (rects[j].intersects(clipRect) && selectedIndex != j) {                    paintTab(tabContext, g, tabPlacement, rects, j, iconRect,                             textRect);                }            }        }        if (selectedIndex >= 0) {            if (rects[selectedIndex].intersects(clipRect)) {                paintTab(tabContext, g, tabPlacement, rects, selectedIndex,                         iconRect, textRect);            }        }    }        protected void setRolloverTab(int index) {        int oldRolloverTab = getRolloverTab();        super.setRolloverTab(index);        Rectangle r = null;                if ((oldRolloverTab >= 0) && (oldRolloverTab < tabPane.getTabCount())) {            r = getTabBounds(tabPane, oldRolloverTab);            if (r != null) {                tabPane.repaint(r);            }        }        if (index >= 0) {            r = getTabBounds(tabPane, index);            if (r != null) {                tabPane.repaint(r);            }        }    }    protected void paintTab(SynthContext ss, Graphics g,                            int tabPlacement, Rectangle[] rects, int tabIndex,                             Rectangle iconRect, Rectangle textRect) {        Rectangle tabRect = rects[tabIndex];        int selectedIndex = tabPane.getSelectedIndex();        boolean isSelected = selectedIndex == tabIndex;        updateTabContext(tabIndex, isSelected,                          (getRolloverTab() == tabIndex),                           (getFocusIndex() == tabIndex));        SynthLookAndFeel.updateSubregion(ss, g, tabRect);        tabContext.getPainter().paintTabbedPaneTabBackground(tabContext,                                g, tabRect.x, tabRect.y, tabRect.width,                                tabRect.height, tabIndex,                                tabPane.getTabPlacement());        tabContext.getPainter().paintTabbedPaneTabBorder(tabContext, g,                   tabRect.x, tabRect.y, tabRect.width, tabRect.height,                   tabIndex, tabPane.getTabPlacement());                if (tabPane.getTabComponentAt(tabIndex) == null) {            String title = tabPane.getTitleAt(tabIndex);            Font font = ss.getStyle().getFont(ss);            FontMetrics metrics = SwingUtilities2.getFontMetrics(tabPane, g, font);            Icon icon = getIconForTab(tabIndex);            layoutLabel(ss, tabPlacement, metrics, tabIndex, title, icon,                    tabRect, iconRect, textRect, isSelected);            paintText(ss, g, tabPlacement, font, metrics,                    tabIndex, title, textRect, isSelected);            paintIcon(g, tabPlacement, tabIndex, icon, iconRect, isSelected);        }    }    protected void layoutLabel(SynthContext ss, int tabPlacement,                                FontMetrics metrics, int tabIndex,                               String title, Icon icon,                               Rectangle tabRect, Rectangle iconRect,                                Rectangle textRect, boolean isSelected ) {	View v = getTextViewForTab(tabIndex);	if (v != null) {	    tabPane.putClientProperty("html", v);	}        textRect.x = textRect.y = iconRect.x = iconRect.y = 0;        ss.getStyle().getGraphicsUtils(ss).layoutText(ss, metrics, title,                         icon, SwingUtilities.CENTER, SwingUtilities.CENTER,                         SwingUtilities.LEADING, SwingUtilities.TRAILING,                         tabRect, iconRect, textRect, textIconGap);	tabPane.putClientProperty("html", null);        int xNudge = getTabLabelShiftX(tabPlacement, tabIndex, isSelected);        int yNudge = getTabLabelShiftY(tabPlacement, tabIndex, isSelected);        iconRect.x += xNudge;        iconRect.y += yNudge;        textRect.x += xNudge;        textRect.y += yNudge;    }    protected void paintText(SynthContext ss,                             Graphics g, int tabPlacement,                             Font font, FontMetrics metrics, int tabIndex,                             String title, Rectangle textRect,                              boolean isSelected) {        g.setFont(font);	View v = getTextViewForTab(tabIndex);	if (v != null) {	    // html	    v.paint(g, textRect);	} else {	    // plain text            int mnemIndex = tabPane.getDisplayedMnemonicIndexAt(tabIndex);            g.setColor(ss.getStyle().getColor(ss, ColorType.TEXT_FOREGROUND));            ss.getStyle().getGraphicsUtils(ss).paintText(ss, g, title,                                  textRect, mnemIndex);	}    }     protected void paintContentBorder(SynthContext ss, Graphics g,                                      int tabPlacement, int selectedIndex) {        int width = tabPane.getWidth();        int height = tabPane.getHeight();        Insets insets = tabPane.getInsets();        int x = insets.left;        int y = insets.top;        int w = width - insets.right - insets.left;        int h = height - insets.top - insets.bottom;        switch(tabPlacement) {          case LEFT:              x += calculateTabAreaWidth(tabPlacement, runCount, maxTabWidth);              w -= (x - insets.left);              break;          case RIGHT:              w -= calculateTabAreaWidth(tabPlacement, runCount, maxTabWidth);              break;                      case BOTTOM:               h -= calculateTabAreaHeight(tabPlacement, runCount, maxTabHeight);              break;          case TOP:          default:              y += calculateTabAreaHeight(tabPlacement, runCount, maxTabHeight);              h -= (y - insets.top);        }        SynthLookAndFeel.updateSubregion(ss, g, new Rectangle(x, y, w, h));        ss.getPainter().paintTabbedPaneContentBackground(ss, g, x, y,                                                           w, h);        ss.getPainter().paintTabbedPaneContentBorder(ss, g, x, y, w, h);    }             private void ensureCurrentLayout() {        if (!tabPane.isValid()) {            tabPane.validate();        } 	/* If tabPane doesn't have a peer yet, the validate() call will	 * silently fail.  We handle that by forcing a layout if tabPane	 * is still invalid.  See bug 4237677.	 */        if (!tabPane.isValid()) {            TabbedPaneLayout layout = (TabbedPaneLayout)tabPane.getLayout();            layout.calculateLayoutInfo();                  }    }        protected int calculateMaxTabHeight(int tabPlacement) {        FontMetrics metrics = getFontMetrics(tabContext.getStyle().getFont(                                             tabContext));        int tabCount = tabPane.getTabCount();        int result = 0;         int fontHeight = metrics.getHeight();        for(int i = 0; i < tabCount; i++) {            result = Math.max(calculateTabHeight(tabPlacement, i, fontHeight), result);        }        return result;     }    protected int calculateTabWidth(int tabPlacement, int tabIndex,                                    FontMetrics metrics) {        Icon icon = getIconForTab(tabIndex);        Insets tabInsets = getTabInsets(tabPlacement, tabIndex);        int width = tabInsets.left + tabInsets.right + 3;        Component tabComponent = tabPane.getTabComponentAt(tabIndex);        if (tabComponent != null) {            width += tabComponent.getPreferredSize().width;        } else {            if (icon != null) {                width += icon.getIconWidth() + textIconGap;            }            View v = getTextViewForTab(tabIndex);            if (v != null) {                // html                width += (int) v.getPreferredSpan(View.X_AXIS);            } else {                // plain text                String title = tabPane.getTitleAt(tabIndex);                width += tabContext.getStyle().getGraphicsUtils(tabContext).                        computeStringWidth(tabContext, metrics.getFont(),                                metrics, title);            }        }        return width;    }    protected int calculateMaxTabWidth(int tabPlacement) {        FontMetrics metrics = getFontMetrics(tabContext.getStyle().getFont(                                     tabContext));        int tabCount = tabPane.getTabCount();        int result = 0;         for(int i = 0; i < tabCount; i++) {            result = Math.max(calculateTabWidth(tabPlacement, i, metrics),                              result);        }        return result;     }    protected Insets getTabInsets(int tabPlacement, int tabIndex) {        updateTabContext(tabIndex, false, false,                          (getFocusIndex() == tabIndex));        return tabInsets;    }    protected FontMetrics getFontMetrics() {        return getFontMetrics(tabContext.getStyle().getFont(tabContext));    }    protected FontMetrics getFontMetrics(Font font) {        return tabPane.getFontMetrics(font);    }    private void updateTabContext(int index, boolean selected,                                  boolean isMouseOver, boolean hasFocus) {        int state = 0;        if (!tabPane.isEnabled() || !tabPane.isEnabledAt(index)) {	    state |= SynthConstants.DISABLED;            if (selected) {                state |= SynthConstants.SELECTED;            }        }        else if (selected) {            state |= (SynthConstants.ENABLED | SynthConstants.SELECTED);            if (isMouseOver && UIManager.getBoolean("TabbedPane.isTabRollover")) {                state |= SynthConstants.MOUSE_OVER;            }        }        else if (isMouseOver) {            state |= (SynthConstants.ENABLED | SynthConstants.MOUSE_OVER);        }        else {            state = SynthLookAndFeel.getComponentState(tabPane);	    state &= ~SynthConstants.FOCUSED; // don't use tabbedpane focus state        }	if (hasFocus && tabPane.hasFocus()) {	    state |= SynthConstants.FOCUSED; // individual tab has focus	}	tabContext.setComponentState(state);    }    private class SynthScrollableTabButton extends SynthArrowButton implements            UIResource {        public SynthScrollableTabButton(int direction) {            super(direction);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -