I am current having a problem with designing an GUI for an assignment. While the project functions at the moment there is a time at the start of the program that I want it to display that the user has to wait for a player so I want the gamePanel
to not be visible at first and waitingForPlayerPanel
to display "Waiting for other player".
Unfortunately for some reason The waitingForPlayerPanel
is not being displayed despite being set to visible in hideGamePanel
. I am currently doing this project on Ubuntu 14.04 if that helps.
Here is a snippet of the code I have written.
public class ClientGame extends JFrame implements ActionListener, Runnable {
private Socket server = null;
private BufferedReader in = null;
private PrintWriter out = null;
private static final Color[] playerColours = { Color.GREEN, Color.RED };
private JButton[][] myButtons = new JButton[3][3];
private JLabel waitingForPlayer = new JLabel("Waiting for other player");
private JPanel waitingForPlayerPanel = new JPanel();
private JPanel gamePanel = new JPanel();
ClientGame() {
try {
this.server = new Socket("127.0.0.1", 4444);
this.in = new BufferedReader(new InputStreamReader(this.server.getInputStream()));
this.out = new PrintWriter(this.server.getOutputStream(), true);
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Alert",
"Couldn't connect to the server.", JOptionPane.ERROR_MESSAGE);
System.exit(-1);
}
}
public void initUI() {
this.waitingForPlayerPanel.setLayout(new BorderLayout());
this.waitingForPlayerPanel.setBackground(Color.white);
this.waitingForPlayerPanel.add("Center", this.waitingForPlayer);
this.getContentPane().add(this.waitingForPlayerPanel);
this.gamePanel.setLayout(new GridLayout(3,3));
this.gamePanel.setSize(450,450);
this.gamePanel.setBackground(Color.white);
this.getContentPane().add(this.gamePanel);
for(int i=0;i<3;i++) {
for(int j=0;j<3;j++) {
this.myButtons[i][j] = new JButton();
this.myButtons[i][j].setPreferredSize(new Dimension(150, 150));
this.myButtons[i][j].addActionListener(this);
this.gamePanel.add(this.myButtons[i][j]);
}
}
this.hideGamePanel();
this.setVisible(true);
WindowListener l = new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
this.addWindowListener(l);
}
private void hideGamePanel() {
this.gamePanel.setVisible(false);
this.waitingForPlayerPanel.setVisible(true);
this.pack();
}
private void showGamePanel() {
this.gamePanel.setVisible(true);
this.waitingForPlayerPanel.setVisible(false);
this.pack();
}
// ...
}