class - Java Question, From a C++ Programmer -
i'm learning java, , i'm on packages hump, things going smoothly. can draw similarities between things i'm learning things know @ least concept of. on earth going on following bit of code? form of constructor, or anonymous object?
something obj = new something() { private static final int num = 3; public void meth() { // w/e } };
/** * notice there's 1 thing in isn't defined: * still needs public abstract void triggerevent(); */ public abstract static class topbutton extends jpanel implements mouselistener { protected buttonpanel parent; private string text; public topbutton(buttonpanel bp, string text) { parent = bp; this.text = text; addmouselistener(this); } public void mouseclicked(mouseevent e) { triggerevent(); } public void mouseentered(mouseevent e) { } public void mouseexited(mouseevent e) { } public void mousepressed(mouseevent e) { } public void mousereleased(mouseevent e) { } public abstract void triggerevent(); public void paintcomponent(graphics g) { super.paintcomponent(g); color oldcolor = g.getcolor(); font oldfont = g.getfont(); font newfont = new font(oldfont.getname(),oldfont.getstyle(),oldfont.getsize()); g.setfont(newfont); g.setcolor(color.black); g.drawstring(text, 20, 20); g.setfont(oldfont); g.setcolor(oldcolor); } }
now, when define buttons, this. providing 1 line needs, thing makes different others. make new file each one, , define new class each one. simpler.
private static void loadbuttonpanelbuttons() { /* button should tell parent bring save screen */ topbutton save = new topbutton(buttonpanel,"save") { public void triggerevent() { parent.triggersave(); } }; save.setborder(lineborder.createblacklineborder()); buttonpanel.add(save); /* button should tell parent bring load screen */ topbutton load = new topbutton(buttonpanel,"load") { public void triggerevent() { parent.triggerload(); } }; load.setborder(lineborder.createblacklineborder()); buttonpanel.add(load); topbutton addtile = new topbutton(buttonpanel,"add tile") { public void triggerevent() { parent.triggeraddtile(); } }; addtile.setborder(lineborder.createblacklineborder()); buttonpanel.add(addtile); topbutton savetiles = new topbutton(buttonpanel,"save tiles") { public void triggerevent() { parent.triggerstylesave(); } }; savetiles.setborder(lineborder.createblacklineborder()); buttonpanel.add(savetiles); }
now, when handle buttons being pressed, remember in definition of topbutton... there was
public void mouseclicked(mouseevent e) { triggerevent(); }
we know triggerevent()
gets defined. can define on per-button basis, , when panel gets clicked, no matter defined triggerevent()
be, gets called.
Comments
Post a Comment