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:

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.

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
Post a Comment