java - JPanel Inside Of A JPanel -


i trying jpanel appear inside of jpanel. currently, jpanel in external jframe , loads other jframe. want jpanel inside other jpanel program not open 2 different windows.

here picture:

picture

the small jpanel text logs want inside of main game frame. i've tried adding panel panel, panel.add(othepanel). i've tried adding jframe, frame.add(otherpanel). overwrites else , gives black background.

how can add panel, resize, , move it?

edits:

that want chatbox be.

that want chatbox be.

class code:

left out top of class.

public static jpanel panel; public static jtextarea textarea = new jtextarea(5, 30); public static jtextfield userinputfield = new jtextfield(30);  public static void write(string message) {     chatbox.textarea.append("[game]: " + message + "\n");     chatbox.textarea.setcaretposition(chatbox.textarea.getdocument()             .getlength());     chatbox.userinputfield.settext(""); }  public chatbox() {     panel = new jpanel();     panel.setpreferredsize(new dimension(220, 40));     panel.setbackground(color.black);      jscrollpane scrollpane = new jscrollpane(textarea);     scrollpane.setpreferredsize(new dimension(380, 100));     textarea.setlinewrap(true);     textarea.setwrapstyleword(true);     textarea.seteditable(false);     scrollpane             .setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_always);     userinputfield.addactionlistener(new actionlistener() {         public void actionperformed(actionevent event) {             string fromuser = userinputfield.gettext();             if (fromuser != null) {                 textarea.append(frame.username + ":" + fromuser + "\n");                 textarea.setcaretposition(textarea.getdocument()                         .getlength());                 userinputfield.settext("");             }         }     });     panel.add(userinputfield, swingconstants.center);     panel.add(scrollpane, swingconstants.center);      //jframe frame = new jframe();     //frame.add(panel);     //frame.setsize(400, 170);     //frame.setvisible(true); } 

main frame class:

    public frame() {     frame.getcontentpane().remove(loginpanel);     frame.repaint();      string capname = capitalizestring(frame.username);     name = new jlabel(capname);      new enemyhealth("enemyhealth10.png");     new health("health10.png");     new loadredcharacter("goingdown.gif");     new spellbook();     new loadmobs();     new loaditems();     new background();     new inventory();     new chatboxinterface();      frame.setbackground(color.black);     frame.redhealthlabel.setfont(new font("serif", font.plain, 20));     ticks.setfont(new font("serif", font.plain, 20));     ticks.setforeground(color.yellow);     frame.redhealthlabel.setforeground(color.black);      // inventory slots     panel.add(slot1);      panel.add(name);      name.setfont(new font("serif", font.plain, 20));     name.setforeground(color.white);      panel.add(enemyhealthlabel);     panel.add(redhealthlabel);     panel.add(firespellbooklabel);     panel.add(icespellbooklabel);     panel.add(spiderlabel);     panel.add(applelabel);     panel.add(firemagiclabel);     panel.add(swordlabel);      // character     panel.add(redcharacterlabel);      // interface     panel.add(inventorylabel);     panel.add(chatboxlabel);      // background     panel.add(backgroundlabel);      frame.setcontentpane(panel);     frame.getcontentpane().invalidate();     frame.getcontentpane().validate();     frame.getcontentpane().repaint();        //i loading of panel somewhere in constructor.      new resetentities();     frame.repaint();      panel.setlayout(null);     run.loadkeylistener();      player.px = connect.x;     player.py = connect.y;      new mouse();      textualmenu.rect = new rectangle(frame.inventorylabel.getx() + 80,             frame.inventorylabel.gety() + 100,             frame.inventorylabel.getwidth(),             frame.inventorylabel.getheight());      player.startmessage(); } 

don't use static variables.

don't use null layout.

use appropriate layout managers. maybe main panel uses borderlayout. add main component center , second panel east. second panel can use borderlayout. can add 2 components north, center or south require.


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

qt - Errors in generated MOC files for QT5 from cmake -