• Welcome to Overclockers Forums! Join us to reply in threads, receive reduced ads, and to customize your site experience!

Java GUI programming

Overclockers is supported by our readers. When you click a link to make a purchase, we may earn a commission. Learn More.

Rastion Signe

Member
Joined
Mar 29, 2004
I'm not sure if this is right place for this but I'll give it a try...

I'm working on building a Jeopardy game for my Client/Server class at school, here is my server below.

import java.io.*;
import java.net.*;

import javax.swing.*;
import java.awt.*;

public class JeopardyServer extends JFrame
{
private MulticastSocket ms;
private JeopardyTrivia jtObject = new JeopardyTrivia();
private Socket socket[] = new Socket[4];
private ObjectInputStream fromClient[] = new ObjectInputStream[4];
private ObjectOutputStream toClient[] = new ObjectOutputStream[4];
private int score[] = new int[4];
private int serverAmt;

public static void main(String[] args)
{
JeopardyServer server = new JeopardyServer();
}
public JeopardyServer()
{
setTitle("Jeopardy Server");
setVisible(true);
setLocationRelativeTo(null);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(1, 1, 5, 5));
JTextArea jtaServer = new JTextArea();

jtaServer.setEditable(false);
jtaServer.setLineWrap(true);

p1.add(jtaServer);
p1.add(new JScrollPane(jtaServer));

add(p1);

jeopardyMessage permissionCatFalse = new jeopardyMessage("permissioncat", "false");
jeopardyMessage permissionCatTrue = new jeopardyMessage("permissioncat", "true");

jeopardyMessage permissionAnsTrue = new jeopardyMessage("permissionans", "true");
jeopardyMessage permissionAnsFalse = new jeopardyMessage("permissionans", "false");

try
{
ServerSocket serverSocket = new ServerSocket(8050);

for(int playerCount = 1; playerCount <= 3; playerCount++)
{
jtaServer.append("Waiting for client " + playerCount + "\n");
socket[playerCount] = new Socket();

socket[playerCount] = serverSocket.accept();
jtaServer.append("Client Connected: Player" + playerCount + "\n");

toClient[playerCount] = new ObjectOutputStream(socket[playerCount].getOutputStream());
fromClient[playerCount] = new ObjectInputStream(socket[playerCount].getInputStream());

jeopardyMessage clientNumber = new jeopardyMessage("client", "" + playerCount);
toClient[playerCount].writeObject(clientNumber);
}

for(int client = 1; client <= 3; client++)
{
jtaServer.append("Sending labels to: " + client + "\n");
//setup category labels on the client interface, the server decides
for(int i = 1; i <= 6; i++)
{
jeopardyMessage labelMessage = new jeopardyMessage("label", jtObject.getLabel(i));
toClient[client].writeObject(labelMessage);
}
jtaServer.append("Sending buttons to: " + client + "\n");
//setup button questions on the client interface, the server decides
for(int i = 1; i < 31; i++)
{
jeopardyMessage buttonMessage = new jeopardyMessage("button", jtObject.getButton(i));
toClient[client].writeObject(buttonMessage);
}
for(int i = 1; i < 31; i++)
{
jeopardyMessage buttonMessage = new jeopardyMessage("answer", jtObject.getAnswer(i));
toClient[client].writeObject(buttonMessage);
}
}
toClient[1].writeObject(permissionCatTrue);
//setup datagram socket
InetAddress group = InetAddress.getByName("237.100.101.102");

ms = new MulticastSocket(3456);
ms.joinGroup(group);
ms.setTimeToLive(5);

while(true)
{
byte[] buf = new byte[1000];

DatagramPacket recv = new DatagramPacket(buf, buf.length);

ms.receive(recv);

ByteArrayInputStream bais = new ByteArrayInputStream(buf);
ObjectInputStream ois = new ObjectInputStream(bais);

jeopardyMessage m = (jeopardyMessage)ois.readObject();

jtaServer.append("Received message from " + m.identity + ": " + m.message + "\n");

if(m.identity.equals("question"))
{
jeopardyMessage question = new jeopardyMessage("question", "" + m.message);
for(int i = 1; i <= 3; i++)
toClient.writeObject(question);
}
if(m.identity.equals("answercur"))
{
jeopardyMessage answer = new jeopardyMessage("answercur", m.message);
for(int i = 1; i <= 3; i++)
toClient.writeObject(answer);
}
else if(m.identity.equals("change"))
{
jeopardyMessage change = new jeopardyMessage("change", "" + m.message);
for(int i = 1; i <= 3; i++)
toClient.writeObject(change);
}
else if(m.identity.equals("score1"))
{
jtaServer.append("Server received score for client 1: " + m.message);
serverAmt = Integer.parseInt(m.message.substring(1));
score[1] = score[1] + serverAmt;

jeopardyMessage amount = new jeopardyMessage("amount", "" + serverAmt);
for(int i = 1; i <= 3; i++)
toClient.writeObject(amount);

jeopardyMessage sendScore = new jeopardyMessage("score1", "" + score[1]);
for(int i = 1; i <= 3; i++)
toClient.writeObject(sendScore);

//reassign permissions
toClient[1].writeObject(permissionAnsFalse);
toClient[1].writeObject(permissionCatTrue);

toClient[2].writeObject(permissionAnsFalse);
toClient[2].writeObject(permissionCatFalse);

toClient[3].writeObject(permissionAnsFalse);
toClient[3].writeObject(permissionCatFalse);
}
else if(m.identity.equals("score2"))
{
jtaServer.append("Server received score for client 2: " + m.message);
serverAmt = Integer.parseInt(m.message.substring(1));
score[2] = score[2] + serverAmt;

jeopardyMessage amount = new jeopardyMessage("amount", "" + serverAmt);
for(int i = 1; i <= 3; i++)
toClient.writeObject(amount);

jeopardyMessage sendScore = new jeopardyMessage("score2", "" + score[2]);
for(int i = 1; i <= 3; i++)
toClient.writeObject(sendScore);

//reassign permissions
toClient[1].writeObject(permissionAnsFalse);
toClient[1].writeObject(permissionCatFalse);

toClient[2].writeObject(permissionAnsFalse);
toClient[2].writeObject(permissionCatTrue);

toClient[3].writeObject(permissionAnsFalse);
toClient[3].writeObject(permissionCatFalse);
}
else if(m.identity.equals("score3"))
{
jtaServer.append("Server received score for client 3: " + m.message);
serverAmt = Integer.parseInt(m.message.substring(1));
score[3] = score[3] + serverAmt;

jeopardyMessage amount = new jeopardyMessage("amount", "" + serverAmt);
for(int i = 1; i <= 3; i++)
toClient.writeObject(amount);

jeopardyMessage sendScore = new jeopardyMessage("score3", "" + score[3]);
for(int i = 1; i <= 3; i++)
toClient.writeObject(sendScore);

//reassign permissions
toClient[1].writeObject(permissionAnsFalse);
toClient[1].writeObject(permissionCatFalse);

toClient[2].writeObject(permissionAnsFalse);
toClient[2].writeObject(permissionCatFalse);

toClient[3].writeObject(permissionAnsFalse);
toClient[3].writeObject(permissionCatTrue);
}
else if(m.identity.equals("incorrect1"))
{
jtaServer.append("Server received minus for client 1: " + m.message);
score[1] = score[1] - Integer.parseInt(m.message.substring(1));
jeopardyMessage sendScore = new jeopardyMessage("score1", "" + score[1]);
for(int i = 1; i <= 3; i++)
toClient.writeObject(sendScore);

//reassign permissions
toClient[1].writeObject(permissionAnsFalse);
toClient[1].writeObject(permissionCatFalse);

toClient[2].writeObject(permissionAnsTrue);
toClient[2].writeObject(permissionCatFalse);

toClient[3].writeObject(permissionAnsTrue);
toClient[3].writeObject(permissionCatFalse);
}
else if(m.identity.equals("incorrect2"))
{
jtaServer.append("Server received minus for client 2: " + m.message);
score[2] = score[2] - Integer.parseInt(m.message.substring(1));
jeopardyMessage sendScore = new jeopardyMessage("score2", "" + score[2]);
for(int i = 1; i <= 3; i++)
toClient.writeObject(sendScore);

//reassign permissions
toClient[1].writeObject(permissionAnsTrue);
toClient[1].writeObject(permissionCatFalse);

toClient[2].writeObject(permissionAnsFalse);
toClient[2].writeObject(permissionCatFalse);

toClient[3].writeObject(permissionAnsTrue);
toClient[3].writeObject(permissionCatFalse);
}
else if(m.identity.equals("incorrect3"))
{
jtaServer.append("Server received minus for client 3: " + m.message);
score[3] = score[3] - Integer.parseInt(m.message.substring(1));
jeopardyMessage sendScore = new jeopardyMessage("score3", "" + score[3]);
for(int i = 1; i <= 3; i++)
toClient.writeObject(sendScore);

//reassign permissions
toClient[1].writeObject(permissionAnsTrue);
toClient[1].writeObject(permissionCatFalse);

toClient[2].writeObject(permissionAnsTrue);
toClient[2].writeObject(permissionCatFalse);

toClient[3].writeObject(permissionAnsFalse);
toClient[3].writeObject(permissionCatFalse);
}
}
}
catch(Exception ex)
{
jtaServer.append("Server: Client disconnected");
System.err.println("Server: " + ex);
}
}
}


My question mainly focuses on the GUI part of my server, it's a problem I have been having with several of my GUI Java applications. Basically when the GUI is rendered it does not display until the window is resized, basically you can just click on the side of the window like you were going to resize it and all the components will appear.

I've been told that this is essentially repainting the window, so I wanted to know if there was a way to refresh the window so I didn't have to click the side every time I wanted the GUI to display.
 
Try reorganizing the GUI lines to something like this:

Code:
setTitle("Jeopardy Server");
setLocationRelativeTo(null);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
 
Back