2015-02-10 157 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

相关问题