2012-10-30 37 views
0

所以,這是我的問題。我有一個Janel,上面有一個JLabel,我想要的是一旦JLabel被點擊,它應該調整大小,(理想情況下它會隨着它的規模而改變,但現在我正在使用一個常量值)。我已經返回了這張圖片,現在我可以對它進行縮放,但是我無法將原來的JLabel變成新的尺寸。使JLabel成爲另一個JLabel

所以這是理想情況下應該發生的事情,e.getSource應該成爲JLabel的新增加尺寸。

我知道我非常接近,我做了一個JOptionPane作爲調試語句,看看我是否可以增加大小,我可以。

爲什麼不能((JLabel的)me.getSource =一; 其中一個是我的新的JLabel

不管怎麼說,這裏是我的代碼:?

請幫我

public void mousePressed(MouseEvent me) { 
     //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY()); 
     //GreetingCard.setBackground.findComponentAt(me.getX(), me.getY) 

     JLabel a= (JLabel) me.getSource(); 
     Icon icon = a.getIcon(); 

     int scale = 4; 

     BufferedImage bi = new BufferedImage(
      scale*icon.getIconWidth(), 
      scale*icon.getIconHeight(), 
      BufferedImage.TYPE_INT_ARGB); 
      Graphics2D g = bi.createGraphics(); 
      g.scale(scale,scale); 
      icon.paintIcon(null,g,0,0); 
      g.dispose(); 
      JLabel temp = new JLabel(new ImageIcon(bi)); 
      ((JLabel)me.getSource())= temp; 

     JOptionPane.showMessageDialog(
      null, 
      new JLabel(new ImageIcon(bi))); 

     System.out.println("The size of the image is" + b.getIconWidth()); 
     initiateEvent = me; 
     me.consume(); 



} 
+0

你想用語句'((JLabel)me.getSource())= temp;'來實現什麼?表達式(例如'((JLabel)me.getSource())')不允許在=的左側。您很可能需要獲取事件源的父級,刪除現有標籤並添加新標籤。 – Zoe

回答

0

me.getSource()返回一個JLabel,它doesn't返回您可以分配一個新的值的變量。

也許最好的辦法就是不要製造新的JLabel只是分配n個將ImageIcon轉換爲舊的JLabel。 ((JLabel)me.getSource())。setIcon(new ImageIcon(bi));

您還需要調用標籤或面板updateUI()來強制重新調整「硬」重繪。