java中解决组件重叠的问题(例如鼠标移动组件时)

java中解决组件覆盖的问题!
     有时候在移动组件的时候会出现两个组件覆盖的情况,但是你想让被覆盖的组件显示出来或者不被覆盖!
在设计GUI时已经可以定义组件的叠放次序了(按摆放组件的先后顺序)。
真正麻烦的是响应哪个组件,这就要创建一个链表,把组件对象按顺序存起来,响应事件时扫描这个链表,按
链表中的先后顺序选择响应组件对象。
     所以要想满足自己的需求,那么在添加组件的时候就要注意顺序就好了!

     另外如果不想用上面的方法,那么你就采用JLayeredPane这个类,分层面板可以帮助你解决覆盖中的问题!

例如moveToFront(Componet), moveToBack(Component), setPosition(), setLayer()。。。。


import java.awt.Button;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
import javax.swing.JLayeredPane;
 
//实现鼠标移动组件的小程序
public class ParentAndChild {
 
    static Point oldPt;
    static JLayeredPane pane = new JLayeredPane();
    static Button btn = new Button(), btn1 = new Button("嘻嘻嘻");
    public static void main(String[] args) {
        Frame fm = new Frame("哈哈哈");
        fm.setVisible(true);
        pane.setLayout(new FlowLayout());
        fm.add(pane, "Center");
        btn.setLabel("啦啦啦");
        btn.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    oldPt=e.getLocationOnScreen();
                }
                public void mouseReleased(MouseEvent e) {
                     pane.setPosition(btn, -1);
                }
        });
         
        btn.addMouseMotionListener(new MouseMotionAdapter() {
                public void mouseDragged(MouseEvent e) {
                     Point pt = e.getLocationOnScreen();
                     btn.setLocation(new Point(btn.getX() + pt.x-oldPt.x,
                                     btn.getY() + pt.y-oldPt.y));
                     oldPt=pt;
                }
                 
        });
             
         
        btn.setPreferredSize(new Dimension(200, 100));
        pane.add(btn);
        pane.add(btn1);
        fm.setSize(new Dimension(600, 800));
         
         
        fm.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
        });
    }
 
}

时间: 2024-11-30 16:38:54

java中解决组件重叠的问题(例如鼠标移动组件时)的相关文章

Java中解决中文乱码问题的方法

Java中解决中文乱码问题的方法 public  String   chStr(String string){   if(string==null){      string="";   }else{      try{         string=(new String(string.getBytes("iso-8859-1"),"GB3212")).trim();      }catch(Exception e){         e.pr

java中格式化“1990-04-15 00:00:00”这个字符串为Date时出现问题

问题描述 java中格式化"1990-04-15 00:00:00"这个字符串为Date时出现问题 SimpleDateFormat sdf = new SimpleDateFormat(""yyyy-MM-dd HH:mm:ss""); String str = ""1990-04-15 00:00:00""; System.out.println(sdf.format(sdf.parse(str)));

在JAVA中解决Zip压缩乱码问题

Java自带的zip压缩工具,可以让我们方便的压缩与解压缩,但是就是默认编码UTF-8没法改(至少我没找到,如果谁找到了,别忘记告诉我,我也不想用第三方的Jar包),虽然使用Java写打压缩与解压缩没问题,但是中文字符在WinRAR里面全是乱码. 所以我采用了Ant包中的压缩功能. 多余的话不多说了,代码才是硬道理,直接上代码吧.顺便说一下,该程序依赖于ant包,但是如果你只用到压缩,你可以用WinRAR打开这个Ant.jar文件,删除org.apache.tools.zip包以外的所有clas

java中ComboBox的鼠标激发

问题描述 java中ComboBox的ItemStateChanged事件是在item有变化时触发,同时也包括在初始化(addItem)数据时触发.请问有没有哪位大牛知道怎样判断ComboBox仅在鼠标按下改变item时触发? 解决方案 解决方案二:搬运了一下,http://bbs.csdn.net/topics/310017621解决方案三:谢谢你.我试过了,还是不行.ItemStateChanged会在addItem时触发.我只需要在鼠标点击时才触发,addItem时不触发.解决方案四:我觉

Java 中的注解详解及示例代码_java

在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行. 注解可以做什么 Java中的注解通常扮演以下角色 编译器指令 构建时指令 运行时指令 其中 Java内置了三种编译器指令,本文后面部分会重点介绍 Java注解可以应用在构建时,即当你构建你的项目时.构建过程包括生成源码,编译源码,生成xml文件,打包编译的源码和文件到JAR包等.软件的构建通常使用诸如Apache Ant和Mav

Jython v2.5.2发布 Python语言在Java中的完全实现

Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现.Jython也有很多从CPython中继承的模块库.最http://www.aliyun.com/zixun/aggregation/7239.html">有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取.所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类.这使其有一个巨大的资源库. 计算

java中excel文件生成时,其他用户不能访问application服务器

问题描述 java中生成excel文件(20000条以上数据)时,运行很长时间excel文件也无法生成,此时其他用户也无法进行对服务器的访问.不知道是什么原因请大家帮忙 解决方案 解决方案二:你说的服务器是什么服务器?Tomcat吗?Tomcat是多线程的,如果一个请求访问生成excel理论上其他的请求也是可以处理了,除非服务器cpu被占满了,这就没办法了.另外如果服务器是你自己写的话,就需要通过新建一个线程来处理excel文件生成,保证主服务器在处理excel的同事可以处理其他请求.

界面-java中错误提示需要class、interface或enum怎么解决

问题描述 java中错误提示需要class.interface或enum怎么解决 package CarSale.CarUI; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; class CarUI extends Frame { public static void main(String [] args) throws SQLException{ { String sql

java中如何在表格中添加组件

问题描述 java中如何在表格中添加组件 getColumnModel().getColumn(1).setCellRenderer() 各位,能告诉我怎样在表格中添加组件,如何是按钮,能点击那种 解决方案 参考:http://blog.sina.com.cn/s/blog_4af14e710102v07y.htmlhttp://blog.163.com/chunlei_cl/blog/static/81843020098300039472/http://download.csdn.net/do