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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM