2015-02-10 123 views
1

我想在鼠標進入包含圖片的JLabel時調整圖像大小。我知道如何調整圖片的大小,事實上,它現在可以工作,但問題是de JLabel不會改變他的尺寸!是否可以調整Jlabel的大小?

我試過了: MyLabel.setSize(360,580); MyLabel.resize(360,580); MyLabel.setPreferredSize(360.580);

這三個選項都不會更改JLabel的大小。這裏是當前代碼:

private void don1MouseExited(java.awt.event.MouseEvent evt) {         
    don1.setSize(260,330); 
    aux2 = new ImageIcon(aux.getImage().getScaledInstance(260, 330, Image.SCALE_DEFAULT)); //resize the image 
    don1.setIcon(aux2); 
} 

任何幫助嗎? 謝謝......

+0

基本上,可以僅通過創建窗口的所述部分的經縮放的圖像的大小調整到一定尺寸。 – 2015-02-10 21:11:09

回答

7

你只需要在JLabel上設置圖標,其餘的應該跟着沒有任何其他代碼。

見下面的例子:

Demo picture

import java.awt.FlowLayout; 
import java.awt.Image; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.net.MalformedURLException; 
import java.net.URL; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class TestResizingLabel { 

    protected void initUI() throws MalformedURLException { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
     final ImageIcon originalImage = new ImageIcon(new URL(
       "http://mgl.skyrock.net/big.138643852.jpg?78138742")); 
     final ImageIcon scaledImage = new ImageIcon(originalImage.getImage() 
       .getScaledInstance(originalImage.getIconWidth()/4, 
         originalImage.getIconHeight()/4, Image.SCALE_SMOOTH)); 
     final JLabel label = new JLabel(scaledImage); 
     label.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseEntered(MouseEvent e) { 
       System.err.println("in"); 
       label.setIcon(originalImage); 
      } 

      @Override 
      public void mouseExited(MouseEvent e) { 
       label.setIcon(scaledImage); 
      } 
     }); 
     panel.add(label); 
     frame.add(panel); 
     frame.setSize(600, 600); 
     frame.setVisible(true); 
    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        new TestResizingLabel().initUI(); 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

} 
+0

謝謝!現在它可以工作了 – 2015-02-10 22:27:18

相關問題