Hi Leute,
ich bin Java anfänger und will ein Gruppenspiel programmieren ... nur hängts schon am Anfang. Irgendwie schaffe ich es nicht normale Steuerelemente hinzuzufügen. Ist im unten angegeben Beispiel der Server nicht gestartet. Sollte doch eigendlich der catch-Block mit lock("Cannot reach Server") aufgerufen werden, oder? Dann sollte aber mit this.removeAll() das ContentPane geleert werden, das Layout auf Flow gesetzt werden und ein JLabel mit Text="Cannot reach Server" hinzugefügt werden.
Das passiert aber nicht. Beim Start bleibt einfach das Java-Logo stehen. Weiß einer von euch warum???
Danke
Lukas
JAVA-VERSION: 6
ich bin Java anfänger und will ein Gruppenspiel programmieren ... nur hängts schon am Anfang. Irgendwie schaffe ich es nicht normale Steuerelemente hinzuzufügen. Ist im unten angegeben Beispiel der Server nicht gestartet. Sollte doch eigendlich der catch-Block mit lock("Cannot reach Server") aufgerufen werden, oder? Dann sollte aber mit this.removeAll() das ContentPane geleert werden, das Layout auf Flow gesetzt werden und ein JLabel mit Text="Cannot reach Server" hinzugefügt werden.
Das passiert aber nicht. Beim Start bleibt einfach das Java-Logo stehen. Weiß einer von euch warum???
Danke
Lukas
JAVA-VERSION: 6
Code:
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class loginApplet extends JApplet implements ActionListener {
private BufferedReader in;
private PrintStream out;
private Socket server;
private static final int port=3000;
private boolean locked;
private JButton buttonUsername;
private JTextField textUsername;
private JList listRooms;
public String name="";
@Override
public void start()
{
server=null;
locked=false;
try
{
server=new Socket(getCodeBase().getHost(),port);
}
catch(Exception e)
{
lock("Cannot reach server");
return;
}
try
{
in=new BufferedReader(new InputStreamReader(server.getInputStream()));
out=new PrintStream(server.getOutputStream());
}
catch(Exception e)
{
try {server.close();} catch (Exception e2) {}
lock("Cannot create streams");
return;
}
this.removeAll();
this.setLayout(new FlowLayout());
JLabel labelUsername=(JLabel) new JLabel("Username: ");
textUsername=new JTextField(30);
textUsername.addActionListener(this);
buttonUsername=new JButton("OK");
buttonUsername.addActionListener(this);
this.add(labelUsername);
this.add(textUsername);
this.add(buttonUsername);
textUsername.requestFocus();
}
private void lock(String text)
{
locked=true;
//Dialoge zerstören
this.removeAll();
this.setLayout(new FlowLayout());
this.add(new JLabel(text));
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(textUsername)||e.getSource().equals(buttonUsername))
{
if(textUsername.getText().trim().equals(""))
{
JOptionPane.showMessageDialog(null, "Do not enter a blank username!", "Username", JOptionPane.ERROR_MESSAGE);
return;
}
if(textUsername.getText().trim().length()>30)
{
JOptionPane.showMessageDialog(null, "Do not enter a username which is longer than 30 chars!", "Username", JOptionPane.ERROR_MESSAGE);
return;
}
try
{
out.println("adduser :"+textUsername.getText().trim());
String request=in.readLine();
if(request==null) throw new Exception("");
if(request.equals("ok ::"))
{
name=textUsername.getText().trim();
this.removeAll();
this.setLayout(new FlowLayout());
listRooms=new JList();
this.add(listRooms);
return;
}
else if(request.substring(0,10).equals("notaccept "))
{
JOptionPane.showMessageDialog(null, request.substring(11), "Username", JOptionPane.ERROR_MESSAGE);
return;
}
}
catch(Exception e2)
{
try {server.close();} catch (Exception e3) {}
lock("Connection to server broke up");
}
}
}
}