JApplet und getContentPane()

Status
Nicht offen für weitere Antworten.

lukas24680

Mitglied
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


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");
            }
        }
    }
}
 

lukas24680

Mitglied
also wenn ich in den ersten catchblock (andere werden ja gar nicht ausgeführt)
e.printStackTrace(); reinschreibe kommt das:
Code:
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:180)
        at loginApplet.start(loginApplet.java:27)
        at sun.applet.AppletPanel.run(AppletPanel.java:465)
        at java.lang.Thread.run(Thread.java:619)
Aber ist das nicht klar! Er kann halt keine Verbindung aufbauen! Aber er sollte doch dann die lock Funktion ausführen und mit einem JLabel CANNOT REACH SERVER ausgeben. meine Frage war warum er das nicht tut!

Trotzdem vielen Dank dass sich ihr euch hier so schnell einschaltet!!!

Lukas
 

Wildcard

Top Contributor
Versuch mal
Code:
  private void lock(String text)
    {
        locked=true;
        //Dialoge zerstören
        this.removeAll();
        this.setLayout(new FlowLayout());
        this.add(new JLabel(text));
        this.validate();
    }
 

Wildcard

Top Contributor
Ok, ich seh schon. Das Problem ist das removeAll. Ein Applet ist ein komplexer Container mit mehreren Panes, removeAll macht dir da Probleme.
Nimm ein JPanel als Content Pane und verändere dann nur dieses.
 

lukas24680

Mitglied
Ok vielen Dank, das hat funktioniert. Ich benutz also getContentPane().add() .......
Manchmal kommt es vor dass ich dann noch repaint machen muss. (durch rumspielen rausgefunden) weißt du warum ???
Lukas
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JApplet und Zeichnen AWT, Swing, JavaFX & SWT 8
J JApplet, HTML und access denied exitVM.0 AWT, Swing, JavaFX & SWT 3
B JApplet AWT, Swing, JavaFX & SWT 2
P JApplet verhält sich im Browser anders als im Eclipse (AppletViewer) AWT, Swing, JavaFX & SWT 3
P JApplet Browser Tab Öffnen AWT, Swing, JavaFX & SWT 5
H Swing JApplet - HTML - ClassNotFoundException AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
B JApplet zwei Panels autobreite? AWT, Swing, JavaFX & SWT 2
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
B Swing JTabbedPane in JApplet -> Reiter bei Aktualisation mehrmals zu sehen AWT, Swing, JavaFX & SWT 3
M JApplet mit Java 3D Komponente AWT, Swing, JavaFX & SWT 6
J JApplet langsam wegen vielen Tooltips? AWT, Swing, JavaFX & SWT 36
R JApplet, Elemente unsichtbar AWT, Swing, JavaFX & SWT 2
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 7
B Swing Komponenten auf JApplet setSize AWT, Swing, JavaFX & SWT 2
V Applet JApplet Flackern durch Repaint AWT, Swing, JavaFX & SWT 11
K JApplet Probleme AWT, Swing, JavaFX & SWT 5
S [JAVA] JFrame in Applet/JApplet AWT, Swing, JavaFX & SWT 14
H JApplet will sich nicht refreshen AWT, Swing, JavaFX & SWT 10
F OpenMap und Swing in JApplet AWT, Swing, JavaFX & SWT 8
S Applet JApplet Problem AWT, Swing, JavaFX & SWT 18
C Applet JApplet - Verständnissproblem AWT, Swing, JavaFX & SWT 3
H Applet JApplet soll neues Tab im Browser öffnen AWT, Swing, JavaFX & SWT 2
G Unterschiedliche Pfadangabe zu Icons zwischen JApplet und JWindow? AWT, Swing, JavaFX & SWT 2
J Swing JApplet Designfrage AWT, Swing, JavaFX & SWT 4
J JApplet schneidet Menüleiste ab AWT, Swing, JavaFX & SWT 4
D JApplet hängt im Browser fest AWT, Swing, JavaFX & SWT 5
M JFrame in JApplet einbinden AWT, Swing, JavaFX & SWT 13
Semox Swing JApplet: Problem MouseListener Anmeldung AWT, Swing, JavaFX & SWT 3
E Bild auf JApplet AWT, Swing, JavaFX & SWT 5
Semox Swing Random Checkbox JApplet AWT, Swing, JavaFX & SWT 14
A Focus für JApplet AWT, Swing, JavaFX & SWT 7
U JPanel wechsel in JApplet AWT, Swing, JavaFX & SWT 14
J AWT JApplet lädt Bild nicht hoch AWT, Swing, JavaFX & SWT 7
R JApplet - Infos ueber Browser moeglich? AWT, Swing, JavaFX & SWT 5
V Kein Fokus für Key Bindings auf JPanel bzw JApplet AWT, Swing, JavaFX & SWT 2
S StackOverflowError bei MouseWheelListener für JApplet AWT, Swing, JavaFX & SWT 5
G JFrame in JApplet AWT, Swing, JavaFX & SWT 6
M Daten speichern mit JApplet AWT, Swing, JavaFX & SWT 9
G paintComponent JPanel im JApplet AWT, Swing, JavaFX & SWT 2
S Alternative zu paint in JApplet AWT, Swing, JavaFX & SWT 3
R Im JFrame ein JApplet zum öffnen einer Url benutzen AWT, Swing, JavaFX & SWT 22
H JApplet fehler objekte unsichtbar. AWT, Swing, JavaFX & SWT 2
C Swing-JApplet AWT, Swing, JavaFX & SWT 3
B JDialog in JApplet AWT, Swing, JavaFX & SWT 3
P Image in JApplet geht nicht AWT, Swing, JavaFX & SWT 2
Arif Swing getContentPane vs setColor AWT, Swing, JavaFX & SWT 1
R Swing getContentPane maximiert sich nicht mit, wenn man das JFrame maxmiert AWT, Swing, JavaFX & SWT 8
E getContentPane() funktioniert nicht AWT, Swing, JavaFX & SWT 5
D Swing Wozu brauche ich getContentPane()? AWT, Swing, JavaFX & SWT 2
H JFrame() und getContentPane() AWT, Swing, JavaFX & SWT 4
S Wozu eigentlich getContentPane() ? AWT, Swing, JavaFX & SWT 8
W getContentPane > java 5 oder java 6 ? AWT, Swing, JavaFX & SWT 2
M Probleme beim Hinzufügen von Objekten zu getContentPane() AWT, Swing, JavaFX & SWT 2
S Seltsames verhalten des Befehles getContentPane().add(.) AWT, Swing, JavaFX & SWT 7
K getContentPane() AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben