java - How to drag and drop the image above to the below image where if 1st image on top is touch with the 1st image below will provide value to be recorded -
package project; import java.awt.color; import java.awt.component;`` import java.awt.point; import java.awt.toolkit; import java.awt.event.mouseadapter; import java.awt.event.mouseevent; import java.net.malformedurlexception; import java.net.url; import java.util.random; import javax.swing.imageicon; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jlayeredpane; import javax.swing.swingutilities; public class dragimage { private jlayeredpane contentpane; jlabel[] draggableimage= new jlabel[11]; imageicon[] image = new imageicon[11]; imageicon imagebox = new imageicon(); jlabel[] box = new jlabel[11]; public dragimage() throws malformedurlexception { jframe frame = new jframe(dragimage.class.getsimplename()); frame.setdefaultcloseoperation(jframe.exit_on_close); contentpane = new jlayeredpane(); contentpane.setbackground(color.white); contentpane.setopaque(true); frame.setcontentpane(contentpane); frame.setsize(toolkit.getdefaulttoolkit().getscreensize()); frame.setextendedstate(frame.getextendedstate() | jframe.maximized_both); frame.setvisible(true); image[1] = new imageicon("1.png"); image[2] = new imageicon("2.png"); image[3] = new imageicon("3.png"); image[4] = new imageicon("4.png"); image[5] = new imageicon("5.png"); image[6] = new imageicon("6.png"); image[7] = new imageicon("7.png"); image[8] = new imageicon("8.png"); image[9] = new imageicon("9.png"); image[10] = new imageicon("10.png"); imagebox = new imageicon("box1.png"); mousedragger dragger = new mousedragger(); random random = new random(); int total = 10; int x=135; for(int i=1;i<11;i++) { draggableimage[i] = new jlabel(image[i]); draggableimage[i].setsize(120,120); draggableimage[i].setlocation(total,20); dragger.makedraggable(draggableimage[i]); contentpane.add(draggableimage[i]); box[i] = new jlabel(imagebox); box[i].setsize(120,120);`enter code here`enter code here` box[i].setlocation(total,contentpane.getheight()-150); dragger.makedraggable(box[i]); contentpane.add(box[i]); total += x; } contentpane.repaint(); } public static class mousedragger extends mouseadapter { private point lastlocation; private component draggedcomponent; private int ans; @override public void mousepressed(mouseevent e) { draggedcomponent = e.getcomponent(); lastlocation = swingutilities.convertpoint(draggedcomponent, e.getpoint(), draggedcomponent.getparent()); } @override public void mousedragged(mouseevent e) { point location = swingutilities.convertpoint(draggedcomponent, e.getpoint(), draggedcomponent.getparent()); if (draggedcomponent.getparent().getbounds().contains(location)) { point newlocation = draggedcomponent.getlocation(); newlocation.translate(location.x - lastlocation.x, location.y - lastlocation.y); newlocation.x = math.max(newlocation.x, 0); newlocation.x = math.min(newlocation.x, draggedcomponent.getparent().getwidth() - draggedcomponent.getwidth()); newlocation.y = math.max(newlocation.y, 0); newlocation.y = math.min(newlocation.y, draggedcomponent.getparent().getheight() - draggedcomponent.getheight()); draggedcomponent.setlocation(newlocation); lastlocation = location; } } @override public void mousereleased(mouseevent e) { lastlocation = null; draggedcomponent = null; } public void makedraggable(component component) { component.addmouselistener(this); component.addmousemotionlistener(this); } } public static void main(string[] args) { swingutilities.invokelater(new runnable() { @override public void run() { try { new dragimage(); } catch (malformedurlexception e) { // todo auto-generated catch block e.printstacktrace(); } } }); } }
first, should use jlabels , add them mouseevents when drag mouse above of them, can drop below. second, below images should calculate positons , widths can find whether above images drop on below images. created picture understand. should make above images fulfill these 2 conditions. here
and i'm going add codes here. tried few times, think it's working want.
import java.awt.eventqueue; import javax.swing.jframe; import javax.swing.jpanel; import java.awt.borderlayout; import javax.swing.jeditorpane; import java.awt.gridlayout; import java.awt.gridbaglayout; import javax.swing.jlabel; import java.awt.gridbagconstraints; import java.awt.insets; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import javax.swing.imageicon; public class example { private jframe frame; jlabel iconbelow1; jlabel iconbelow2; jlabel iconbelow3; int x1; int x2; int x3; int w1; int w2; int w3; int point; jlabel pointarea; jlabel icon1; jlabel icon2; jlabel icon3; jlabel icon4; jlabel icon5; int c = 0; /** * launch application. */ public static void main(string[] args) { eventqueue.invokelater(new runnable() { public void run() { try { example window = new example(); window.frame.setvisible(true); } catch (exception e) { e.printstacktrace(); } } }); } /** * create application. */ public example() { initialize(); } /** * initialize contents of frame. */ private void initialize() { frame = new jframe(); frame.setbounds(100, 100, 450, 381); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.getcontentpane().setlayout(new borderlayout(0, 0)); jpanel panel = new jpanel(); frame.getcontentpane().add(panel, borderlayout.center); panel.setlayout(null); icon1 = new jlabel(""); icon1.seticon(new imageicon("c:\\users\\gizem\\desktop\\yellowtree.jpg")); icon1.setbounds(24, 55, 46, 48); panel.add(icon1); icon2 = new jlabel(""); icon2.seticon(new imageicon("c:\\users\\gizem\\desktop\\flower.jpg")); icon2.setbounds(115, 55, 59, 48); panel.add(icon2); icon3 = new jlabel(""); icon3.seticon(new imageicon("c:\\users\\gizem\\desktop\\2.jpg")); icon3.setbounds(207, 55, 46, 48); panel.add(icon3); icon4 = new jlabel("new label"); icon4.seticon(new imageicon("c:\\users\\gizem\\desktop\\4.jpg")); icon4.setbounds(286, 55, 46, 48); panel.add(icon4); icon5 = new jlabel("new label"); icon5.seticon(new imageicon("c:\\users\\gizem\\desktop\\6.jpg")); icon5.setbounds(378, 55, 46, 48); panel.add(icon5); iconbelow1 = new jlabel(""); iconbelow1.seticon(new imageicon("c:\\users\\gizem\\desktop\\back.jpg")); iconbelow1.setbounds(0, 226, 109, 25); panel.add(iconbelow1); iconbelow2 = new jlabel("new label"); iconbelow2.seticon(new imageicon("c:\\users\\gizem\\desktop\\back.jpg")); iconbelow2.setbounds(356, 226, 68, 25); panel.add(iconbelow2); iconbelow3 = new jlabel("new label"); iconbelow3.seticon(new imageicon("c:\\users\\gizem\\desktop\\back.jpg")); iconbelow3.setbounds(205, 226, 75, 25); panel.add(iconbelow3); pointarea = new jlabel("point:"); pointarea.setbounds(10, 11, 46, 14); panel.add(pointarea); mylistener listener = new mylistener(); icon1.addmouselistener(listener); icon2.addmouselistener(listener); icon3.addmouselistener(listener); icon4.addmouselistener(listener); icon5.addmouselistener(listener); system.out.println(iconbelow1.getx()); system.out.println(iconbelow2.getx()); system.out.println(iconbelow3.getx()); x1 = iconbelow1.getx(); x2 = iconbelow2.getx(); x3 = iconbelow3.getx(); w1 = iconbelow1.getwidth(); w2 = iconbelow2.getwidth(); w3 = iconbelow3.getwidth(); } private class mylistener implements mouselistener { public void mousepressed(mouseevent arg0) { } @override public void mouseclicked(mouseevent e) { } @override public void mouseentered(mouseevent e) { int = ((jlabel) e.getsource()).getx(); int b = ((jlabel) e.getsource()).gety(); system.out.println("position x : " + + " " + "position y : " + b); b += 210; //b += 150; ((jlabel) e.getsource()).setlocation(a, b); if(((jlabel) e.getsource()) == icon1 ){ if (a < iconbelow1.getx() + iconbelow1.getwidth() && !(iconbelow1.getx() > + ((jlabel) e.getsource()).getwidth()) ){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow2.getx() + iconbelow2.getwidth() && !(iconbelow2.getx() > + ((jlabel) e.getsource()).getwidth()) ){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow3.getx() + iconbelow3.getwidth() && !(iconbelow3.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } } else if(((jlabel) e.getsource()) == icon2 ){ if (a < iconbelow1.getx() + iconbelow1.getwidth() && !(iconbelow1.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow2.getx() + iconbelow2.getwidth() && !(iconbelow2.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow3.getx() + iconbelow3.getwidth() && !(iconbelow3.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } } else if(((jlabel) e.getsource()) == icon3 ){ if (a < iconbelow1.getx() + iconbelow1.getwidth() && !(iconbelow1.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow2.getx() + iconbelow2.getwidth() && !(iconbelow2.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow3.getx() + iconbelow3.getwidth() && !(iconbelow3.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } } else if(((jlabel) e.getsource()) == icon4 ){ if (a < iconbelow1.getx() + iconbelow1.getwidth() && !(iconbelow1.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow2.getx() + iconbelow2.getwidth() && !(iconbelow2.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow3.getx() + iconbelow3.getwidth() && !(iconbelow3.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } } else if(((jlabel) e.getsource()) == icon5 ){ if (a < iconbelow1.getx() + iconbelow1.getwidth() && !(iconbelow1.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow2.getx() + iconbelow2.getwidth() && !(iconbelow2.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } else if (a < iconbelow3.getx() + iconbelow3.getwidth() && !(iconbelow3.getx() > + ((jlabel) e.getsource()).getwidth() )){ point += 1; pointarea.settext(integer.tostring(point)); } } } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } } }
note: tried answer question way understood. did want or meant different something?
Comments
Post a Comment