Monday, 15 July 2013

java - JButtons not appearing properly with borderlayout, also, issues adding actionListener to buttons -



java - JButtons not appearing properly with borderlayout, also, issues adding actionListener to buttons -

i've got 2 issues here same code, firstly, reason, jbuttons not appear on gui current configuration, code run (debugger appear @ line of code). can't seem figure out what's issue.

the sec issue have jbutton.addactionlistener(this) doesn't work, , need actionlistener fire event in different class can't anonymous actionlistener.

here's code:

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ppp extends jframe{ static digit atp_hundred = new digit(); //amount pay static digit atp_ten = new digit(); static digit atp_unit = new digit(); static digit atp_tenth = new digit(); static digit atp_hundreth = new digit(); static digit ltr_ten = new digit(); //litres static digit ltr_unit = new digit(); static digit ltr_tenth = new digit(); static digit ppl_hundred = new digit(); //pence per litre static digit ppl_ten = new digit(); static digit ppl_unit = new digit(); static digit ppl_tenth = new digit(); static ppp frame = new ppp(); public static void init() { frame.setsize(1280,800); frame.setlayout(new borderlayout()); jpanel mainpanel = new mainpanel(); mainpanel.setlayout(new gridlayout(2,2)); frame.getcontentpane().add(mainpanel); frame.addwindowlistener(new java.awt.event.windowadapter() { public void windowclosing(java.awt.event.windowevent windowevent) { system.exit(0); } }); frame.setvisible(true); } public static void main(string arg[]){ init(); while (true) { (int = 0; < 10; i++) { atp_hundred.value = i; atp_hundred.update(); frame.getcontentpane().repaint(); seek { thread.sleep(1000); } grab (exception e) { } frame.getcontentpane().repaint(); seek { thread.sleep(10); } grab (exception e) { } } } } public void refresh() { repaint(); } public ppp(){ super(); } /*public void update(graphics g) { paint(g); }*/ public static void atpcreate(graphics g, int x, int y) { atp_hundred.create(x, y); drawpolygons(g, atp_hundred); atp_ten.create(x+50,y); drawpolygons(g, atp_ten); atp_unit.create(x+100, y); drawpolygons(g, atp_unit); g.drawoval(x+145, y+60, 10,10); atp_tenth.create(x+160, y); drawpolygons(g, atp_tenth); } public static void ltrcreate(graphics g, int x, int y) { ltr_ten.create(x+50, y); drawpolygons(g, ltr_ten); ltr_unit.create(x+100, y); drawpolygons(g, ltr_unit); g.drawoval(x+145, y+60, 10, 10); ltr_tenth.create(x+160, y); drawpolygons(g, ltr_tenth); } public static void pplcreate(graphics g, int x, int y) { ppl_hundred.create(x, y); drawpolygons(g, ppl_hundred); ppl_ten.create(x+50,y); drawpolygons(g, ppl_ten); ppl_unit.create(x+100, y); drawpolygons(g, ppl_unit); g.drawoval(x+145, y+60, 10,10); ppl_tenth.create(x+160, y); drawpolygons(g, ppl_tenth); } public static void drawpolygons(graphics g, digit d) { if (d.top) { g.setcolor(color.green); g.fillpolygon(d.ptop); } else { g.setcolor(color.black); g.drawpolygon(d.ptop); } if (d.topleft) { g.setcolor(color.green); g.fillpolygon(d.ptopleft); } else { g.setcolor(color.black); g.drawpolygon(d.ptopleft); } if (d.topright) { g.setcolor(color.green); g.fillpolygon(d.ptopright); } else { g.setcolor(color.black); g.drawpolygon(d.ptopright); } if (d.mid) { g.setcolor(color.green); g.fillpolygon(d.pmid); } else { g.setcolor(color.black); g.drawpolygon(d.pmid); } if (d.botleft) { g.setcolor(color.green); g.fillpolygon(d.pbotleft); } else { g.setcolor(color.black); g.drawpolygon(d.pbotleft); } if (d.botright) { g.setcolor(color.green); g.fillpolygon(d.pbotright); } else { g.setcolor(color.black); g.drawpolygon(d.pbotright); } if (d.bot) { g.setcolor(color.green); g.fillpolygon(d.pbot); } else { g.setcolor(color.black); g.drawpolygon(d.pbot); } g.setcolor(color.black); } } class mainpanel extends jpanel { public mainpanel() { setpreferredsize(new dimension(1280,800)); jpanel customerpanel = new customerpanel(); customerpanel.setlayout(new borderlayout()); add(customerpanel); //add(new customerbuttons()); } @override public void paintcomponent(graphics g) { super.paintcomponent(g); g.setfont(new font("copperplate gothic light", font.plain, 30)); string title = "pete's petrol pump simulation valpha0.1"; g.setcolor(color.white); //g.clearrect(0,0,640,500); g.setcolor(color.black); g.drawstring(title, (int)(640 - (g.getfontmetrics().getstringbounds(title, g).getwidth() / 2)), 75); } } class customerpanel extends jpanel { public customerpanel() { //setpreferredsize(new dimension(640,500)); //setpreferredsize(new dimension(500,800)); customerbuttons buttons = new customerbuttons(); add(buttons, borderlayout.south); } @override public void paintcomponent(graphics g){ //super.paintcomponent(g); /*g.setfont(new font("copperplate gothic light", font.plain, 30)); string title = "pete's petrol pump simulation valpha0.1"; g.setcolor(color.white); g.clearrect(0,0,640,500); g.setcolor(color.black); g.drawstring(title, (int)(640 - (g.getfontmetrics().getstringbounds(title, g).getwidth() / 2)), 75);*/ g.drawroundrect(20,100,600,250,5,5); g.setfont(new font("gill sans mt", font.plain, 20)); g.drawstring("amount pay: ", 40, 160); ppp.atpcreate(g, 200, 110); g.drawstring("litres dispensed: ", 40, 240); ppp.ltrcreate(g, 200, 190); g.drawstring("pence per litre: ", 40, 320); ppp.pplcreate(g, 200, 270); //system.out.println((g.getfontmetrics().getstringbounds("amount pay", g).getwidth())); } } class customerbuttons extends jpanel { public customerbuttons() { jbutton remove = new jbutton("remove nozzle"); remove.setactioncommand("remove"); //system.out.println("hello"); remove.addactionlistener(this); remove.settooltiptext("replace fucking nozzle"); jbutton squeeze = new jbutton("squeeze nozzle"); squeeze.setactioncommand("squeeze"); squeeze.addactionlistener(this); squeeze.settooltiptext("squeeze fucking nozzle"); jbutton stop = new jbutton("stop squeeze"); stop.setactioncommand("stop"); stop.addactionlistener(this); stop.settooltiptext("stop squeezing fucking nozzle"); jbutton replace = new jbutton("replace nozzle"); replace.setactioncommand("replace"); replace.addactionlistener(this); replace.settooltiptext("replace fucking nozzle"); add(remove); add(squeeze); add(stop); add(replace); } } class digit { int value = 0; boolean top = false; boolean topleft = false; boolean topright = false; boolean mid = false; boolean botleft = false; boolean botright = false; boolean bot = false; public void update() { switch(value) { case 0: top = true; topleft = true; topright = true; mid = false; botleft = true; botright = true; bot = true; break; case 1: top = false; topleft = false; topright = true; mid = false; botleft = false; botright = true; bot = false; break; case 2: top = true; topleft = false; topright = true; mid = true; botleft = true; botright = false; bot = true; break; case 3: top = true; topleft = false; topright = true; mid = true; botleft = false; botright = true; bot = true; break; case 4: top = false; topleft = true; topright = true; mid = true; botleft = false; botright = true; bot = false; break; case 5: top = true; topleft = true; topright = false; mid = true; botleft = false; botright = true; bot = true; break; case 6: top = true; topleft = true; topright = false; mid = true; botleft = true; botright = true; bot = true; break; case 7: top = true; topleft = false; topright = true; mid = false; botleft = false; botright = true; bot = false; break; case 8: top = true; topleft = true; topright = true; mid = true; botleft = true; botright = true; bot = true; break; case 9: top = true; topleft = true; topright = true; mid = true; botleft = false; botright = true; bot = true; break; } } polygon ptop = new polygon(); polygon ptopleft = new polygon(); polygon ptopright = new polygon(); polygon pmid = new polygon(); polygon pbotleft = new polygon(); polygon pbotright = new polygon(); polygon pbot = new polygon(); public void create(int x, int y) { ptop.addpoint(x+10, y); ptop.addpoint(x+30, y); ptop.addpoint(x+35, y+5); ptop.addpoint(x+30, y+10); ptop.addpoint(x+10, y+10); ptop.addpoint(x+5, y+5); ptopleft.addpoint(x+5, y+5); ptopleft.addpoint(x+10, y+10); ptopleft.addpoint(x+10, y+30); ptopleft.addpoint(x+5, y+35); ptopleft.addpoint(x, y+30); ptopleft.addpoint(x, y+10); ptopright.addpoint(x+35, y+5); ptopright.addpoint(x+40, y+10); ptopright.addpoint(x+40, y+30); ptopright.addpoint(x+35, y+35); ptopright.addpoint(x+30, y+30); ptopright.addpoint(x+30, y+10); pmid.addpoint(x+10, y+30); pmid.addpoint(x+30, y+30); pmid.addpoint(x+35, y+35); pmid.addpoint(x+30, y+40); pmid.addpoint(x+10, y+40); pmid.addpoint(x+5, y+35); pbotleft.addpoint(x+5, y+35); pbotleft.addpoint(x+10, y+40); pbotleft.addpoint(x+10, y+60); pbotleft.addpoint(x+5, y+65); pbotleft.addpoint(x, y+60); pbotleft.addpoint(x, y+40); pbotright.addpoint(x+35, y+35); pbotright.addpoint(x+40, y+40); pbotright.addpoint(x+40, y+60); pbotright.addpoint(x+35, y+65); pbotright.addpoint(x+30, y+60); pbotright.addpoint(x+30, y+40); pbot.addpoint(x+10, y+60); pbot.addpoint(x+30, y+60); pbot.addpoint(x+35, y+65); pbot.addpoint(x+30, y+70); pbot.addpoint(x+10, y+70); pbot.addpoint(x+5, y+65); } }

thanks help.

you have used layout wrongly. adding components before setting layout panel first question suggesion read layoutmanagers

now sec question: actionlistener? see modified code. have added it.

modified code

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ppp extends jframe{ static digit atp_hundred = new digit(); //amount pay static digit atp_ten = new digit(); static digit atp_unit = new digit(); static digit atp_tenth = new digit(); static digit atp_hundreth = new digit(); static digit ltr_ten = new digit(); //litres static digit ltr_unit = new digit(); static digit ltr_tenth = new digit(); static digit ppl_hundred = new digit(); //pence per litre static digit ppl_ten = new digit(); static digit ppl_unit = new digit(); static digit ppl_tenth = new digit(); static ppp frame = new ppp(); public static void init() { frame.setsize(1280,800); frame.setlayout(new borderlayout()); jpanel mainpanel = new mainpanel(); mainpanel.setlayout(new gridlayout(2,2)); frame.getcontentpane().add(mainpanel); frame.addwindowlistener(new java.awt.event.windowadapter() { public void windowclosing(java.awt.event.windowevent windowevent) { system.exit(0); } }); frame.setvisible(true); } public static void main(string arg[]){ init(); while (true) { (int = 0; < 10; i++) { atp_hundred.value = i; atp_hundred.update(); frame.getcontentpane().repaint(); seek { thread.sleep(1000); } grab (exception e) { } frame.getcontentpane().repaint(); seek { thread.sleep(10); } grab (exception e) { } } } } public void refresh() { repaint(); } public ppp(){ super(); } /*public void update(graphics g) { paint(g); }*/ public static void atpcreate(graphics g, int x, int y) { atp_hundred.create(x, y); drawpolygons(g, atp_hundred); atp_ten.create(x+50,y); drawpolygons(g, atp_ten); atp_unit.create(x+100, y); drawpolygons(g, atp_unit); g.drawoval(x+145, y+60, 10,10); atp_tenth.create(x+160, y); drawpolygons(g, atp_tenth); } public static void ltrcreate(graphics g, int x, int y) { ltr_ten.create(x+50, y); drawpolygons(g, ltr_ten); ltr_unit.create(x+100, y); drawpolygons(g, ltr_unit); g.drawoval(x+145, y+60, 10, 10); ltr_tenth.create(x+160, y); drawpolygons(g, ltr_tenth); } public static void pplcreate(graphics g, int x, int y) { ppl_hundred.create(x, y); drawpolygons(g, ppl_hundred); ppl_ten.create(x+50,y); drawpolygons(g, ppl_ten); ppl_unit.create(x+100, y); drawpolygons(g, ppl_unit); g.drawoval(x+145, y+60, 10,10); ppl_tenth.create(x+160, y); drawpolygons(g, ppl_tenth); } public static void drawpolygons(graphics g, digit d) { if (d.top) { g.setcolor(color.green); g.fillpolygon(d.ptop); } else { g.setcolor(color.black); g.drawpolygon(d.ptop); } if (d.topleft) { g.setcolor(color.green); g.fillpolygon(d.ptopleft); } else { g.setcolor(color.black); g.drawpolygon(d.ptopleft); } if (d.topright) { g.setcolor(color.green); g.fillpolygon(d.ptopright); } else { g.setcolor(color.black); g.drawpolygon(d.ptopright); } if (d.mid) { g.setcolor(color.green); g.fillpolygon(d.pmid); } else { g.setcolor(color.black); g.drawpolygon(d.pmid); } if (d.botleft) { g.setcolor(color.green); g.fillpolygon(d.pbotleft); } else { g.setcolor(color.black); g.drawpolygon(d.pbotleft); } if (d.botright) { g.setcolor(color.green); g.fillpolygon(d.pbotright); } else { g.setcolor(color.black); g.drawpolygon(d.pbotright); } if (d.bot) { g.setcolor(color.green); g.fillpolygon(d.pbot); } else { g.setcolor(color.black); g.drawpolygon(d.pbot); } g.setcolor(color.black); } } class mainpanel extends jpanel { public mainpanel() { setpreferredsize(new dimension(1280,800)); jpanel customerpanel = new customerpanel(); add(customerpanel); //add(new customerbuttons()); } @override public void paintcomponent(graphics g) { super.paintcomponent(g); g.setfont(new font("copperplate gothic light", font.plain, 30)); string title = "pete's petrol pump simulation valpha0.1"; g.setcolor(color.white); //g.clearrect(0,0,640,500); g.setcolor(color.black); g.drawstring(title, (int)(640 - (g.getfontmetrics().getstringbounds(title, g).getwidth() / 2)), 75); } } class customerpanel extends jpanel { public customerpanel() { //setpreferredsize(new dimension(640,500)); //setpreferredsize(new dimension(500,800)); setlayout(new borderlayout()); customerbuttons buttons = new customerbuttons(); add(buttons, borderlayout.south); } @override public void paintcomponent(graphics g){ //super.paintcomponent(g); /*g.setfont(new font("copperplate gothic light", font.plain, 30)); string title = "pete's petrol pump simulation valpha0.1"; g.setcolor(color.white); g.clearrect(0,0,640,500); g.setcolor(color.black); g.drawstring(title, (int)(640 - (g.getfontmetrics().getstringbounds(title, g).getwidth() / 2)), 75);*/ g.drawroundrect(20,100,600,250,5,5); g.setfont(new font("gill sans mt", font.plain, 20)); g.drawstring("amount pay: ", 40, 160); ppp.atpcreate(g, 200, 110); g.drawstring("litres dispensed: ", 40, 240); ppp.ltrcreate(g, 200, 190); g.drawstring("pence per litre: ", 40, 320); ppp.pplcreate(g, 200, 270); //system.out.println((g.getfontmetrics().getstringbounds("amount pay", g).getwidth())); } } class customerbuttons extends jpanel implements actionlistener { public customerbuttons() { jbutton remove = new jbutton("remove nozzle"); remove.setactioncommand("remove"); //system.out.println("hello"); remove.addactionlistener(this); remove.settooltiptext("replace fucking nozzle"); jbutton squeeze = new jbutton("squeeze nozzle"); squeeze.setactioncommand("squeeze"); squeeze.addactionlistener(this); squeeze.settooltiptext("squeeze fucking nozzle"); jbutton stop = new jbutton("stop squeeze"); stop.setactioncommand("stop"); stop.addactionlistener(this); stop.settooltiptext("stop squeezing fucking nozzle"); jbutton replace = new jbutton("replace nozzle"); replace.setactioncommand("replace"); replace.addactionlistener(this); replace.settooltiptext("replace fucking nozzle"); add(remove); add(squeeze); add(stop); add(replace); } public void actionperformed(actionevent e) { // stuff here } } class digit { int value = 0; boolean top = false; boolean topleft = false; boolean topright = false; boolean mid = false; boolean botleft = false; boolean botright = false; boolean bot = false; public void update() { switch(value) { case 0: top = true; topleft = true; topright = true; mid = false; botleft = true; botright = true; bot = true; break; case 1: top = false; topleft = false; topright = true; mid = false; botleft = false; botright = true; bot = false; break; case 2: top = true; topleft = false; topright = true; mid = true; botleft = true; botright = false; bot = true; break; case 3: top = true; topleft = false; topright = true; mid = true; botleft = false; botright = true; bot = true; break; case 4: top = false; topleft = true; topright = true; mid = true; botleft = false; botright = true; bot = false; break; case 5: top = true; topleft = true; topright = false; mid = true; botleft = false; botright = true; bot = true; break; case 6: top = true; topleft = true; topright = false; mid = true; botleft = true; botright = true; bot = true; break; case 7: top = true; topleft = false; topright = true; mid = false; botleft = false; botright = true; bot = false; break; case 8: top = true; topleft = true; topright = true; mid = true; botleft = true; botright = true; bot = true; break; case 9: top = true; topleft = true; topright = true; mid = true; botleft = false; botright = true; bot = true; break; } } polygon ptop = new polygon(); polygon ptopleft = new polygon(); polygon ptopright = new polygon(); polygon pmid = new polygon(); polygon pbotleft = new polygon(); polygon pbotright = new polygon(); polygon pbot = new polygon(); public void create(int x, int y) { ptop.addpoint(x+10, y); ptop.addpoint(x+30, y); ptop.addpoint(x+35, y+5); ptop.addpoint(x+30, y+10); ptop.addpoint(x+10, y+10); ptop.addpoint(x+5, y+5); ptopleft.addpoint(x+5, y+5); ptopleft.addpoint(x+10, y+10); ptopleft.addpoint(x+10, y+30); ptopleft.addpoint(x+5, y+35); ptopleft.addpoint(x, y+30); ptopleft.addpoint(x, y+10); ptopright.addpoint(x+35, y+5); ptopright.addpoint(x+40, y+10); ptopright.addpoint(x+40, y+30); ptopright.addpoint(x+35, y+35); ptopright.addpoint(x+30, y+30); ptopright.addpoint(x+30, y+10); pmid.addpoint(x+10, y+30); pmid.addpoint(x+30, y+30); pmid.addpoint(x+35, y+35); pmid.addpoint(x+30, y+40); pmid.addpoint(x+10, y+40); pmid.addpoint(x+5, y+35); pbotleft.addpoint(x+5, y+35); pbotleft.addpoint(x+10, y+40); pbotleft.addpoint(x+10, y+60); pbotleft.addpoint(x+5, y+65); pbotleft.addpoint(x, y+60); pbotleft.addpoint(x, y+40); pbotright.addpoint(x+35, y+35); pbotright.addpoint(x+40, y+40); pbotright.addpoint(x+40, y+60); pbotright.addpoint(x+35, y+65); pbotright.addpoint(x+30, y+60); pbotright.addpoint(x+30, y+40); pbot.addpoint(x+10, y+60); pbot.addpoint(x+30, y+60); pbot.addpoint(x+35, y+65); pbot.addpoint(x+30, y+70); pbot.addpoint(x+10, y+70); pbot.addpoint(x+5, y+65); } }

but in case seek create layout below:

java swing events jbutton actionlistener

No comments:

Post a Comment