java - how to scale image using getScaledInstance? -


i trying scale image using mouse motion listener not working. right doing in manually using 2 jtextfields. taking value jtextfields , pass values getscaledinstance() method. not working.

my code :

        final jtextfield jj = new jtextfield();         jj.setcolumns(5);         buttonpane.add(jj);         jbutton btn  = new jbutton("resize");         final jtextfield jj1 = new jtextfield();         jj1.setcolumns(5);         buttonpane.add(jj1);         buttonpane.add(btn);         btn.addactionlistener(new actionlistener() {               @override             public void actionperformed(actionevent arg0)              {                 int x= integer.parseint(jj.gettext());                 int y=integer.parseint(jj1.gettext());                  bufferedimage b = a;                 b.getscaledinstance(x, y,bufferedimage.type_int_argb);                 label.seticon(new imageicon(b));             }         }); 

here a bufferedimage instance popped stack. , label jlabel.

you need assign return reference something...

image scaled = b.getscaledinstance(x, y,bufferedimage.type_int_argb); label.seticon(new imageicon(scaled)); 

you may want have read through the perils of image.getscaledinstance()

update mouse wheel scaling

import java.awt.borderlayout; import java.awt.dimension; import java.awt.eventqueue; import java.awt.graphics; import java.awt.graphics2d; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import java.awt.event.mousewheelevent; import java.awt.event.mousewheellistener; import java.awt.geom.affinetransform; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import java.text.numberformat; import java.util.logging.level; import java.util.logging.logger; import javax.imageio.imageio; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.timer; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception;  public class mousescaletest {      public static void main(string[] args) {         new mousescaletest();     }      public mousescaletest() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                 }                  jframe frame = new jframe("testing");                 frame.setdefaultcloseoperation(jframe.exit_on_close);                 frame.setlayout(new borderlayout());                 frame.add(new testpane());                 frame.pack();                 frame.setlocationrelativeto(null);                 frame.setvisible(true);             }         });     }      public class testpane extends jpanel {          private bufferedimage img;          private float scale = 1f;         private float scaledelta = 0.05f;          public testpane() {              try {                 img = imageio.read(new file("/path/to/your/image"));             } catch (ioexception ex) {                 ex.printstacktrace();             }              addmousewheellistener(new mousewheellistener() {                  @override                 public void mousewheelmoved(mousewheelevent e) {                     int rotation = e.getwheelrotation();                     if (rotation < 0) {                         scale -= scaledelta;                     } else {                         scale += scaledelta;                     }                     if (scale < 0) {                         scale = 0;                     } else if (scale > 1) {                         scale = 1;                     }                     repaint();                 }             });         }          @override         public dimension getpreferredsize() {             return img == null ? new dimension(200, 200) : new dimension(img.getwidth(), img.getheight());         }          @override         protected void paintcomponent(graphics g) {             super.paintcomponent(g);             if (img != null) {                 graphics2d g2d = (graphics2d) g.create();                  int x = (int)((getwidth() - (img.getwidth() * scale)) / 2);                 int y = (int)(getheight() - (img.getheight() * scale)) / 2;                  affinetransform @ = new affinetransform();                 at.translate(x, y);                 at.scale(scale, scale);                  g2d.settransform(at);                 g2d.drawimage(img, 0, 0, this);                  g2d.dispose();             }         }     } } 

take time read through how write mouse listener , how write mouse-wheel listener