public MainFrame( final Socket socket, String user, ObjectInputStream reader, ObjectOutputStream writer) { super("Main"); frame = this; this.socket = socket; owner = user; Reader = reader; Writer = writer; screenSize = Toolkit.getDefaultToolkit().getScreenSize(); frameSize = new Dimension(300, 510); setSize(frameSize); setLocation(screenSize.width / 2 - frameSize.width, (screenSize.height - frameSize.height) / 2); setBackground(Color.decode("#ccfffa")); setResizable(false); setLayout(null); // add Label "Online User List:" Label label1 = new Label("Online User List:"); label1.setSize(200, 20); label1.setLocation(20, 40); add(label1); // add user list userList = new List(10, false); userList.setSize(260, 95); userList.setLocation(20, 60); add(userList); // add label "chat content:" Label label2 = new Label("Chat Content:"); label2.setSize(200, 20); label2.setLocation(20, 160); add(label2); // add chat content textArea = new TextArea("", 18, 30, TextArea.SCROLLBARS_VERTICAL_ONLY); textArea.setBackground(Color.white); textArea.setEditable(false); textArea.setSize(260, 220); textArea.setLocation(20, 180); add(textArea); // add label "Send Message:" Label label3 = new Label("Send Message:"); label3.setSize(200, 20); label3.setLocation(20, 405); add(label3); // add input textfield final TextField inputArea = new TextField(); inputArea.setSize(205, 25); inputArea.setLocation(20, 425); add(inputArea); // add send button Button send = new Button("Send"); send.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { String text = inputArea.getText(); try { Writer.writeObject(new MSG("MSG", text)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } textArea.setText(textArea.getText().concat("[" + owner + "]:" + text + "\n")); inputArea.setText(""); } }); send.setSize(50, 25); send.setLocation(230, 425); add(send); // add button "Start Game" final Button btnGame = new Button("Start Game"); btnGame.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (!isGame) { setSize(460, 510); controlPanel = new ControlPanel(socket, Reader, Writer, frame, owner); controlPanel.setLocation(300, 60); add(controlPanel); isGame = true; try { Writer.writeObject(new MSG("REQLIST", "")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } btnGame.setLabel("End Game"); } else { try { Writer.writeObject(new MSG("QUIT", "")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } setSize(300, 510); remove(controlPanel); isGame = false; btnGame.setLabel("Start Game"); } } }); btnGame.setSize(90, 25); btnGame.setLocation(65, 465); add(btnGame); // add button quit Button btnQuit = new Button("Exit"); btnQuit.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (isGame) { if (!controlPanel.canQuit) return; try { Writer.writeObject(new MSG("QUIT", "")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } controlPanel.isHost = false; controlPanel.panelHost = null; controlPanel.panelHost = null; controlPanel.initPanelStart(); controlPanel.panelStart.setSize(135, 420); controlPanel.panelStart.setLocation(0, 0); controlPanel.add(controlPanel.panelStart); } runFlag = false; if (socket != null) { try { Writer.writeObject(new MSG("QUT", "")); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block // e.printStackTrace(); } } System.exit(0); } }); btnQuit.setSize(55, 25); btnQuit.setLocation(175, 465); add(btnQuit); new ReceiveThread(Reader).start(); }