i learning java, have created dice thrower - when press button throws dice - output in console. how can output in same frame buttons.
// sorry not native english speaking person, hope idea.
import javax.swing.*; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.random; import javax.swing.jtextarea; public class main { public static void main(string s[]){ random rand = new random(); jframe frame = new jframe("dice thrower 2000"); jpanel panel=new jpanel(); panel.setlayout(new flowlayout()); jlabel label = new jlabel("throw dice"); jlabel label1 = new jlabel("you got : "); jtextarea output = new jtextarea(" "); jbutton buttond4 = new jbutton(); buttond4.settext("d4"); buttond4.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent actionevent) { int n = rand.nextint(4) + 1; system.out.println("you threw d4 , got " + n); } }); jbutton buttond6 = new jbutton(); buttond6.settext("d6"); buttond6.addactionlistener(new actionlistener() {...}); jbutton buttond8 = new jbutton(); buttond8.settext("d8"); buttond8.addactionlistener(new actionlistener() {...}); jbutton buttond10 = new jbutton(); buttond10.settext("d10"); buttond10.addactionlistener(new actionlistener() {...}); jbutton buttond12 = new jbutton(); buttond12.settext("d12"); buttond12.addactionlistener(new actionlistener() {...}); jbutton buttond20 = new jbutton(); buttond20.settext("d20"); buttond20.addactionlistener(new actionlistener() {...}); panel.add(label); panel.add(buttond4); panel.add(buttond6); panel.add(buttond8); panel.add(buttond10); panel.add(buttond12); panel.add(buttond20); panel.add(label1); frame.add(output); frame.add(panel); frame.setsize(500, 200); frame.setlocationrelativeto(null); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.setvisible(true); }
}
i have provided buttons d4 - extended code, code rest buttons identical.
using system.out.println("you threw d4 , got " + n);
causes print console.
you should use jtextarea#append
method instead. code become:
final jtextarea output = new jtextarea(" "); jbutton buttond4 = new jbutton(); buttond4.settext("d4"); buttond4.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent actionevent) { int n = rand.nextint(4) + 1; output.append("you threw d4 , got " + n + "\n"); } });
edit:
you need add output
jframe
. tried using
frame.add(output); frame.add(panel);
but won't work. content pane of jframe
default has borderlayout
, , calling add
add component in borderlayout#center
. area can contain 1 component.
now have 2 options:
- change
layoutmanager
. this overview of standard availablelayoutmanager
s. keep current
layoutmanager
, , add 2 components different areas, e.g.frame.add(output, borderlayout.center); frame.add(panel, borderlayout.south);
Comments
Post a Comment