zoukankan      html  css  js  c++  java
  • Java实现点击一个控件实现删除一个控件的方法

               最近在做项目的时候需要处理点击一个JLabel实现删除这一个JLabel的功能。最近折磨了一点时间,查了一下API。找到2个方法可以实现这个功能。

    remove

    public void remove(Component comp)
    从该容器中移除指定组件。如果 comp 不是 rootPane,则将调用转发到 contentPane。如果 comp 不是 JFramecontentPane 的子级,则不执行任何操作。 

     repaint

    public void repaint(long time,
                        int x,
                        int y,
                        int width,
                        int height)
    time 毫秒内重绘此组件的指定矩形区域。
    实现这一功能的代码如下:
     1 package qq.client.tools;
     2 import java.awt.Frame;
     3 import java.awt.event.MouseEvent;
     4 import java.awt.event.MouseListener;
     5 import javax.swing.JLabel;
     6 /**
     7  * 实现点击一个JLabel删除一个JLabel的小功能
     8  * @author Administrator
     9  *
    10  */
    11 public class Test {
    12  
    13  public static void main(String[] args) {
    14  
    15    final Frame frame = new Frame();//创建窗口
    16    frame.setSize(800, 600);
    17    frame.setLayout(null);
    18   
    19    JLabel btn = null;//监听
    20    JLabel b=null;
    21    btn = new JLabel("btn");//创建btn,加入监听
    22    btn.addMouseListener(new MouseListener() {    
    23     @Override
    24     public void mouseReleased(MouseEvent e) {
    25         // TODO Auto-generated method stub
    26         
    27     }
    28     
    29     @Override
    30     public void mousePressed(MouseEvent e) {
    31         // TODO Auto-generated method stub
    32         
    33     }
    34     
    35     @Override
    36     public void mouseExited(MouseEvent e) {
    37         // TODO Auto-generated method stub
    38         
    39     }
    40     
    41     @Override
    42     public void mouseEntered(MouseEvent e) {
    43         // TODO Auto-generated method stub
    44         
    45     }
    46     
    47     @Override
    48     public void mouseClicked(MouseEvent e) {
    49         // TODO Auto-generated method stub
    50         if(e.getClickCount()==1){//点击事情
    51                 JLabel sourceBtn = (JLabel)e.getSource();//获取事件源对象(点击的btn)
    52                 frame.remove(sourceBtn);
    53                 frame.repaint();
    54         }
    55     }
    56 });
    57            frame.add(btn);
    58            btn.setBounds(50, 50, 50, 50);
    59           frame.setVisible(true);
    60            }
    61 }

    整个功能就实现了。注意不加 frame.repaint();这句代码,会不能及时刷新。需要你最小化一下窗口或者最大化一下(我觉得可能是刷新需要用户操作才会刷新)窗口才能自动刷新。加了 frame.repaint();就会及时刷新。

    作者:鹏鹏
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题请联系906522957@qq.com
  • 相关阅读:
    函数式编程与命令式编程的学习难度比较
    Swfit4.0中JSON与模型原生互转(JSONEncoder/JSONDecoder的使用)
    元类型与类型的区别
    Swift
    swift类型操作规范
    PHP实现执行定时任务的几种思路详解
    基于ThinkPHP与阿里大于的PHP短信验证功能
    laravel中将session由文件保存改为数据库保存
    laravel5.*安装使用Redis以及解决Class 'PredisClient' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误
    Python基础知识汇总
  • 原文地址:https://www.cnblogs.com/liaoweipeng/p/4477088.html
Copyright © 2011-2022 走看看