`

转载- Swing可搭载任意控件的GroupPanel

阅读更多
可以搭载任意控件的grouppanel控件
public class ComponentTitledBorder implements Border, MouseListener, SwingConstants {
    int offset = 5;

    Component comp;
    JComponent container;
    Rectangle rect;
    Border border;

    public ComponentTitledBorder(Component comp, JComponent container, Border border) {
        this.comp = comp;
        this.container = container;
        this.border = border;
        container.addMouseListener(this);
    }

    public boolean isBorderOpaque() {
        return true;
    }

    public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
        Insets borderInsets = border.getBorderInsets(c);
        Insets insets = getBorderInsets(c);
        int temp = (insets.top - borderInsets.top) / 2;
        border.paintBorder(c, g, x, y + temp, width, height - temp);
        Dimension size = comp.getPreferredSize();
        rect = new Rectangle(offset, 0, size.width, size.height);
        SwingUtilities.paintComponent(g, comp, (Container) c, rect);
    }

    public Insets getBorderInsets(Component c) {
        Dimension size = comp.getPreferredSize();
        Insets insets = border.getBorderInsets(c);
        insets.top = Math.max(insets.top, size.height);
        return insets;
    }

    private void dispatchEvent(MouseEvent me) {
        if (rect != null && rect.contains(me.getX(), me.getY())) {
            Point pt = me.getPoint();
            pt.translate(-offset, 0);
            comp.setBounds(rect);
            comp.dispatchEvent(new MouseEvent(comp, me.getID(), me.getWhen(), me.getModifiers(),
                    pt.x, pt.y, me.getClickCount(), me.isPopupTrigger(), me.getButton()));
            if (!comp.isValid())
                container.repaint();
        }
    }

    public void mouseClicked(MouseEvent me) {
        dispatchEvent(me);
    }

    public void mouseEntered(MouseEvent me) {
        dispatchEvent(me);
    }

    public void mouseExited(MouseEvent me) {
        dispatchEvent(me);
    }

    public void mousePressed(MouseEvent me) {
        dispatchEvent(me);
    }

    public void mouseReleased(MouseEvent me) {
        dispatchEvent(me);
    }

}
  • 大小: 13.6 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    俄罗斯方块游戏-Java-Swing实现.zip

    俄罗斯方块游戏-Java-Swing实现.zip俄罗斯方块游戏-Java-Swing实现.zip 俄罗斯方块游戏-Java-Swing实现.zip俄罗斯方块游戏-Java-Swing实现.zip 俄罗斯方块游戏-Java-Swing实现.zip俄罗斯方块游戏-Java-Swing实现.zip...

    fest-swing文档

    Fest-Swing提供了丰富的断言方法来检查组件的状态,比如`assertText()`用于验证文本框的内容,`assertEnabled()`和`assertDisabled()`用来确认组件是否可操作。此外,还有用于检查组件可见性的方法,以及与事件相关...

    swt源码和jar包dj-native-swing-swt.jar

    在标题提到的"swt源码和jar包dj-native-swing-swt.jar"中,"dj-native-swing-swt.jar"是一个特殊的库,它结合了SWT和JNativeSwing,允许在Java Swing应用中嵌入SWT组件。这使得开发者可以在同一应用程序中同时使用...

    swing-layout-1.0.3

    swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3swing-layout-1.0.3...

    基于java的开发源码-swing-explorer(Swing开发辅助工具).zip

    基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-explorer(Swing开发辅助工具).zip 基于java的开发源码-swing-...

    Java课程设计-学生成绩管理系统-Swing+MySQL.zip

    Java课程设计-学生成绩管理系统-Swing+MySQL.zipJava课程设计-学生成绩管理系统-Swing+MySQL.zipJava课程设计-学生成绩管理系统-Swing+MySQL.zipJava课程设计-学生成绩管理系统-Swing+MySQL.zipJava课程设计-学生...

    基于springboot oracle java-swing 的 职工考勤管理信息系统.zip

    基于springboot oracle java-swing 的 职工考勤管理信息系统 基于springboot oracle java-swing 的 职工考勤管理信息系统 基于springboot oracle java-swing 的 职工考勤管理信息系统 基于springboot oracle java-...

    ant-swing.jar.zip

    <project name="Ant-Swing-Demo" default="show-dialog"> <taskdef name="swingdialog" classname="org.apache.tools.ant.taskdefs.SwingDialogTask" classpath="path/to/ant-swing.jar"/> <target name="show-...

    aspect-swing-worker-1.1.jar.zip

    《深入理解Aspect-Swing-Worker-1.1.jar在Java编程中的应用》 在Java开发领域,库文件的使用是提升代码效率、实现特定功能的关键。今天我们将深度探讨"aspect-swing-worker-1.1.jar.zip"这个压缩包,它包含了一个名...

    gt-swing.rar

    <groupId>org.geotools <artifactId>gt-swing ${geotools.version} 依赖的jar包下载

    truelicense-swing-1.32.jar

    truelicense-swing-1.32.jar\\license授权机制所需jar包

    material-ui-swing, 面向 Java Swing的现代材料设计 UI.zip

    material-ui-swing, 面向 Java Swing的现代材料设计 UI material-ui-swing面向 Java Swing的现代材料设计 UI外观JComponents具有材质设计外观和感觉。 大多数组件都是响应性的,具有悬停效果,并单击"效果( 没有波纹...

    (转)使用FEST-Swing测试GUI

    总的来说,FEST-Swing作为一款强大的GUI测试工具,能够有效地帮助开发者保证Swing应用的稳定性和功能正确性,是Java GUI测试领域不可或缺的利器。通过深入理解和熟练运用,我们可以提升测试的质量,减少手动测试的...

    luke-swing-8.0.0-luke-release.zip

    Lucene索引查看工具 Luke。Luke 是查询LUCENE索引文件的工具, 而且用 Luke 的Search可以做查询。Luke is a handy development and diagnostic to Lucene.

    java Miaglayout 的包 miglayout-3.7-swing.jar

    java Miaglayout布局管理器所用到的的包 miglayout-3.7-swing.jar

    fest-swing-1.2 Java Packets

    FEST-Swing是一个用于Swing GUI应用程序功能测试的java开源类库。支持模拟用户交互( 鼠标操作和键盘输入)。支持JDK中的所有Swing组件。提供简洁、强大的API来创建和维护GUI功能测试。

    Java-Swing-exercises.rar_java 控件

    这个"Java-Swing-exercises.rar"压缩包显然包含了作者在大学期间编写的Swing控件练习,旨在帮助学习者熟悉并掌握Swing的各种控件。下面,我们将深入探讨Swing中的主要控件及其用途。 1. **JFrame**: JFrame是Swing...

    ant-swing-1.9.4.jar

    标签:ant-swing-1.9.4.jar,ant,swing,1.9.4,jar包下载,依赖包

    ant-swing-1.7.1.jar

    标签:ant-swing-1.7.1.jar,ant,swing,1.7.1,jar包下载,依赖包

    90个java-swing基础例子.zip

    7. **Swing构件的可定制性**:Swing组件高度可定制,可以通过重绘(override paintComponent())或设置属性来改变组件的外观和行为。 8. **对话框(Dialogs)**:Swing提供了JOptionPane,JOptionPane可以创建各种类型...

Global site tag (gtag.js) - Google Analytics