Fork me on GitHub

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();就会及时刷新。

posted @ 2015-05-04 19:24  鹏&鹏  阅读(8258)  评论(1编辑  收藏  举报