首页 > 代码库 > java中解决组件重叠的问题(例如鼠标移动组件时)
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); } }); }}
java中解决组件重叠的问题(例如鼠标移动组件时)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。