java - Console output to Frame, text area? -


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 available layoutmanagers.
  • keep current layoutmanager, , add 2 components different areas, e.g.

    frame.add(output, borderlayout.center); frame.add(panel, borderlayout.south); 

Comments