i working on images .
i have created 2 buttons addbutton , removebutton
addbutton adds image using jfilechooser appends jlabel
and removebutton remove image
i have added 4 images using addbutton
now i want click on image , when press remove button not getting removed
i new swing please me
thank you
edited : code
import java.awt.container; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.focusadapter; import java.awt.event.focusevent; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import javax.imageio.imageio; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jfilechooser; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jtextarea; import javax.swing.filechooser.filenameextensionfilter; public class imagecreation extends jframe { jbutton browsebtn=new jbutton("browse"); jbutton removebtn=new jbutton("remove"); string filename; bufferedimage img; jlabel imglbl; private volatile jlabel lastfocused; public imagecreation() { setsize(500,500); setvisible(true); setlayout(new flowlayout()); setdefaultcloseoperation(jframe.exit_on_close); add(browsebtn); add(removebtn); browsebtn.addactionlistener(new actionlistener() { public void actionperformed(actionevent ae) { jfilechooser chooser = new jfilechooser(); chooser.setmultiselectionenabled(true); chooser.addchoosablefilefilter(new filenameextensionfilter("images", "jpg", "png", "gif", "bmp")); chooser.setacceptallfilefilterused(false); chooser.setcurrentdirectory(new file(system.getproperty("user.home"))); int option = chooser.showopendialog(imagecreation.this); if(option == jfilechooser.approve_option) { filename=chooser.getselectedfile().tostring(); try { img = imageio.read(new file(filename)); imglbl = new jlabel(); imglbl.seticon(new imageicon(img)); imglbl.setbounds(150,50,img.getwidth(),img.getheight()); add(imglbl); imglbl.addfocuslistener(new focusadapter() { public void focusgained(focusevent e) { if (e.getcomponent() instanceof jlabel) lastfocused = (jlabel) e.getcomponent(); } }); imglbl.repaint(); } catch (ioexception e) { } } } }); removebtn.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { if(lastfocused==null) joptionpane.showmessagedialog(null,"you must select label remove it"); if (lastfocused != null) { container scollpane = lastfocused; system.out.println(scollpane); container parent = scollpane.getparent(); system.out.println(parent); parent.remove(scollpane); } } }); } public static void main(string args[]) { new imagecreation(); } }
jlabel doesn't have keyboard focus, mouse.
i didn't change code, made working:
imglbl.addmouselistener(new mouseadapter() { @override public void mouseclicked(mouseevent e) { if (e.getcomponent() instanceof jlabel) lastfocused = (jlabel) e.getcomponent(); } }); you have repaint after deletion, add repaint() after code:
if (lastfocused != null) { container scollpane = lastfocused; system.out.println(scollpane); container parent = scollpane.getparent(); system.out.println(parent); parent.remove(scollpane); } repaint(); // repainting after removal please, copy , paste following code. should work
import java.awt.container; import java.awt.flowlayout; import java.awt.event.*; import java.awt.image.bufferedimage; import java.io.file; import java.io.ioexception; import javax.imageio.imageio; import javax.swing.imageicon; import javax.swing.jbutton; import javax.swing.jfilechooser; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jtextarea; import javax.swing.filechooser.filenameextensionfilter; public class imagecreation extends jframe { jbutton browsebtn=new jbutton("browse"); jbutton removebtn=new jbutton("remove"); string filename; bufferedimage img; jlabel imglbl; private volatile jlabel lastfocused; public imagecreation() { setsize(500,500); setvisible(true); setlayout(new flowlayout()); setdefaultcloseoperation(jframe.exit_on_close); add(browsebtn); add(removebtn); browsebtn.addactionlistener(new actionlistener() { public void actionperformed(actionevent ae) { jfilechooser chooser = new jfilechooser(); chooser.setmultiselectionenabled(true); chooser.addchoosablefilefilter(new filenameextensionfilter("images", "jpg", "png", "gif", "bmp")); chooser.setacceptallfilefilterused(false); chooser.setcurrentdirectory(new file(system.getproperty("user.home"))); int option = chooser.showopendialog(imagecreation.this); if(option == jfilechooser.approve_option) { filename=chooser.getselectedfile().tostring(); try { img = imageio.read(new file(filename)); imglbl = new jlabel(); imglbl.seticon(new imageicon(img)); imglbl.setbounds(150,50,img.getwidth(),img.getheight()); add(imglbl); imglbl.addmouselistener(new mouseadapter() { @override public void mouseclicked(mouseevent e) { if (e.getcomponent() instanceof jlabel) lastfocused = (jlabel) e.getcomponent(); } }); imglbl.repaint(); } catch (ioexception e) { } } } }); removebtn.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { if(lastfocused==null) joptionpane.showmessagedialog(null,"you must select label remove it"); if (lastfocused != null) { container scollpane = lastfocused; system.out.println(scollpane); container parent = scollpane.getparent(); system.out.println(parent); parent.remove(scollpane); } repaint(); } }); } public static void main(string args[]) { new imagecreation(); } }
Comments
Post a Comment