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

📄 jtabbedpaneadapter.java

📁 SWING的界面UI包 SWING的界面UI包
💻 JAVA
字号:
/*
 * JTabbedPaneAdapter.java
 *
 * Created on 2007年5月4日, 上午12:41
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package dyno.swing.designer.beans.adapters.container;

import dyno.swing.designer.beans.ConstraintsGroupModel;
import dyno.swing.designer.beans.DesignerEditor;
import dyno.swing.designer.beans.HoverPainter;
import dyno.swing.designer.beans.SpecialContainerAdapter;
import dyno.swing.designer.beans.SwingDesigner;
import dyno.swing.designer.beans.Util;
import dyno.swing.designer.beans.editors.TextEditor;
import dyno.swing.designer.beans.painters.TabbedPaneOutlinePainter;
import dyno.swing.designer.properties.TabbedPaneConstraints;
import dyno.swing.designer.properties.ValidationException;

import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;


import javax.swing.JTabbedPane;


/**
 *
 * @author William Chen
 */
public class JTabbedPaneAdapter extends AbstractContainerAdapter
    implements SpecialContainerAdapter {
    /** Creates a new instance of JTabbedPaneAdapter */
    public JTabbedPaneAdapter(SwingDesigner designer, Component component) {
        super(designer, component);
    }

    @Override
    public void paintComponentMascot(Graphics g) {
        super.paintComponentMascot(g);
        g.setColor(BOX_BORDER_COLOR);
        g.drawRect(0, 0, component.getWidth() - 1, component.getHeight() - 1);
    }

    @Override
    protected boolean addBean(Container container, Component bean, int x, int y) {
        JTabbedPane tabbedPane = (JTabbedPane) container;
        tabbedPane.addTab(Util.getComponentName(bean), bean);
        Util.layoutContainer(tabbedPane);

        return true;
    }

    @Override
    public HoverPainter getPainter() {
        return new TabbedPaneOutlinePainter(designer, (Container)component);
    }

    @Override
    public boolean componentClicked(MouseEvent e) {
        Rectangle rel = Util.getRelativeBounds(component);
        int x = e.getX() - designer.getOuterLeft() - rel.x;
        int y = e.getY() - designer.getOuterTop() - rel.y;
        JTabbedPane tabbedPane = (JTabbedPane) component;
        int count = tabbedPane.getTabCount();

        for (int i = 0; i < count; i++) {
            Rectangle tabBounds = tabbedPane.getBoundsAt(i);

            if ((tabBounds != null) && tabBounds.contains(x, y)) {
                tabbedPane.setSelectedIndex(i);

                return false;
            }
        }

        return true;
    }

    public int getIndexOfChild(Component child) {
        JTabbedPane tp = (JTabbedPane) component;

        return tp.indexOfComponent(child);
    }

    public int getChildCount() {
        JTabbedPane tp = (JTabbedPane) component;

        return tp.getComponentCount();
    }

    public Component getChild(int index) {
        JTabbedPane tp = (JTabbedPane) component;

        return tp.getComponentAt(index);
    }

    public void showComponent(Component child) {
        JTabbedPane tp = (JTabbedPane) component;
        tp.setSelectedComponent(child);
    }

    public void addNextComponent(Component dragged) {
        ((JTabbedPane) component).addTab(Util.getComponentName(dragged), dragged);
    }

    public void addBefore(Component target, Component added) {
        JTabbedPane tp = (JTabbedPane) component;
        int index = tp.indexOfComponent(target);

        if (index != -1) {
            tp.insertTab(Util.getComponentName(added), null, added, null, index);
        } else {
            tp.addTab(Util.getComponentName(added), added);
        }
    }

    public void addAfter(Component target, Component added) {
        JTabbedPane tp = (JTabbedPane) component;
        int index = tp.indexOfComponent(target);

        if (index != -1) {
            index++;

            if (index > tp.getTabCount()) {
                tp.addTab(Util.getComponentName(added), added);
            } else {
                tp.insertTab(Util.getComponentName(added), null, added, null, index);
            }
        } else {
            tp.addTab(Util.getComponentName(added), added);
        }
    }

    public boolean canAcceptMoreComponent() {
        return true;
    }

    public boolean canAddBefore(Component hovering) {
        return true;
    }

    public boolean canAddAfter(Component hovering) {
        return true;
    }

    public void validateBeanValue(Object value)
        throws ValidationException {
        if ((value == null) || (((String) value).trim().length() == 0)) {
            throw new ValidationException("Tab title cannot be empty!");
        }
    }

    public void setBeanValue(Object value) {
        JTabbedPane jtp = (JTabbedPane) component;
        int index = jtp.getSelectedIndex();

        if (index != -1) {
            jtp.setTitleAt(index, (String) value);
        }
    }

    public Object getBeanValue() {
        JTabbedPane jtp = (JTabbedPane) component;
        int index = jtp.getSelectedIndex();

        if (index != -1) {
            return jtp.getTitleAt(index);
        } else {
            return null;
        }
    }

    public Rectangle getEditorBounds(int x, int y) {
        JTabbedPane jtp = (JTabbedPane) component;
        int index = getTabIndexAt(jtp, x, y);

        if (index != -1) {
            return jtp.getBoundsAt(index);
        }

        return null;
    }

    private int getTabIndexAt(JTabbedPane jtp, int x, int y) {
        int count = jtp.getTabCount();

        for (int i = 0; i < count; i++) {
            Rectangle rect = jtp.getBoundsAt(i);

            if ((rect != null) && rect.contains(x, y)) {
                return i;
            }
        }

        return -1;
    }

    public DesignerEditor getDesignerEditor(int x, int y) {
        JTabbedPane jtp = (JTabbedPane) component;
        int index = getTabIndexAt(jtp, x, y);

        if (index != -1) {
            if (designerEditor == null) {
                designerEditor = new TextEditor();
            }

            return designerEditor;
        } else {
            return null;
        }
    }

    @Override
    public ConstraintsGroupModel getLayoutConstraints(Component bean) {
        return new TabbedPaneConstraints(((JTabbedPane)component), bean);
    }
    
}

⌨️ 快捷键说明

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