Thursday, 15 April 2010

java - How to add ArrayList of JButton on a JFrame? -



java - How to add ArrayList of JButton on a JFrame? -

i coding little game in which,in 1 class(named brick) extends jpannel,i have jbutton working "brick" , in class extends jframe have arraylist of brick named grid holds bricks.but don't know how represent bricks of arraylist of bricks in serial form,i.e,one after anoher,on jframe of grid class.please give me suggestions. edit : want no space between 2 buttons.how can stick 2 buttons,sharing boundaries?

you may utilize next code snippet add together , array of customized classes of jbutton. may edit per needs.

import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * jlist of jbuttons. */ public class jbuttonlistdemo implements runnable { private jlist jlist; public static void main(string args[]) { swingutilities.invokelater(new jbuttonlistdemo()); } public void run() { object[] items = new buttonitem[] { new buttonitem("apple"), new buttonitem("banana"), new buttonitem("carrot"), new buttonitem("date"), new buttonitem("eggplant"), new buttonitem("fig"), new buttonitem("guava"), }; jlist = new jlist(items); jlist.setcellrenderer(new buttonlistrenderer()); jlist.setselectionmode(listselectionmodel.single_selection); jlist.setvisiblerowcount(5); jlist.addmouselistener(new mouseadapter() { @override public void mouseclicked(mouseevent event) { clickbuttonat(event.getpoint()); } }); jframe frame = new jframe(); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.getcontentpane().add(new jscrollpane(jlist)); frame.pack(); frame.setlocationrelativeto(null); frame.setvisible(true); } private void clickbuttonat(point point) { int index = jlist.locationtoindex(point); buttonitem item = (buttonitem) jlist.getmodel().getelementat(index); item.getbutton().doclick(); // jlist.repaint(jlist.getcellbounds(index, index)); } public class buttonitem { private jbutton button; public buttonitem(string name) { this.button = new jbutton(name); button.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { system.out.println(button.gettext() + " clicked."); } }); } public jbutton getbutton() { homecoming button; } @override public string tostring() { homecoming button.gettext(); } } class buttonlistrenderer extends jbutton implements listcellrenderer { public component getlistcellrenderercomponent(jlist comp, object value, int index, boolean isselected, boolean hasfocus) { setenabled(comp.isenabled()); setfont(comp.getfont()); settext(value.tostring()); if (isselected) { setbackground(comp.getselectionbackground()); setforeground(comp.getselectionforeground()); } else { setbackground(comp.getbackground()); setforeground(comp.getforeground()); } homecoming this; } } }

alternatively, layout jbuttons vertically on jpanel (using new gridlayout(0,1) perhaps) , set jpanel in jscrollpane, mocking jlist of jbuttons.

java swing arraylist

No comments:

Post a Comment