我有一個 JPanel,它反過來有一個帶有圖標的 JLabel。我使用這個 JLabel 作為背景圖像。我希望在使用 netbeans GUI Builder 時能夠在 JSlider 的幫助下放大此圖像,但我似乎無法鍛煉 stateChangedListener。任何幫助,將不勝感激。到目前為止,這是我所得到的: 1- 這就是我設置圖像的方式public static void setImage(JLabel label,String path) { ImageIcon myImage=new ImageIcon(path); Image img=myImage.getImage(); Image newImg=img.getScaledInstance(label.getWidth(), label.getHeight(),Image.SCALE_SMOOTH); ImageIcon image=new ImageIcon(newImg); label.setIcon(image);}這是我的 stateChangedListener,它將圖像縮放為 +10 到 JLabel 的高度和寬度,但問題是每次調整滑塊時都必須添加新圖像。private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) { int value = jSlider1.getValue(); if(value==55){ String path=System.getProperty("user.dir")+File.separator+"sources"+File.separator+"1891.jpg"; ImageIcon myImage=new ImageIcon(path); Image img=myImage.getImage(); Image newImg=img.getScaledInstance(label.getWidth()+10, label.getHeight()+10,Image.SCALE_SMOOTH); ImageIcon image=new ImageIcon(newImg); label.setIcon(image); }}
1 回答

慕沐林林
TA貢獻2016條經驗 獲得超9個贊
嘗試從標簽的圖標中獲取圖像,然后將其放大:
private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {
int value = jSlider1.getValue();
if(value==55) {
ImageIcon myImage = (ImageIcon) label.getIcon();
Image img = myImage.getImage();
Image newImg = img.getScaledInstance(label.getWidth()+10, label.getHeight()+10,Image.SCALE_SMOOTH);
label.setIcon( new ImageIcon(newImg) );
}
}
通過這種方式,您將避免從圖像文件創建新圖像,但是您仍然需要使用getScaledInstance.
希望這可以幫助
添加回答
舉報
0/150
提交
取消