Man bør fra paint-metoden generelt ikke lave kald til metoder der ikke har noget med det grafiske at gøre. Paint bliver kaldt efter behov.
Fra dokumentationen:
"This method is called when the contents of the component should be painted; such as when the component is first being shown or is damaged and in need of repair. The clip rectangle in the Graphics parameter is set to the area which needs to be painted. Subclasses of Component that override this method need not call super.paint(g). "
lakana: Javasystemet kalder som kommentaren siger paint hver gang billedet skal gentegnes. Det kan være når et andet vindue har været inde foran, eller noget helt andet...
lakana: Læser du overhovedet hvad vi skriver? Det er ikke dig der kalder repaint, det har du ret i, men det gøres automatisk af java-systemet. Prøv at bruge constructoren, som jeg skrev før.
ja jeg læser hvad i skriver.. men forstår ikke ret meget af de engelske ord.. er ikke ret god til engelsk.. sorry.. sidder faktisk med en engelsk dansk ordbog hehe..
sådan her ikke??
public void run() { ss.send("LOGIN,Guest,0,0,bolle.gif"); }
Jo, men det ser ud til at der er en fejl mere et andet sted. Hvordan logger du ind? Kan systemet overhovedet have to der er logget ind med det samme navn samtidig?
public socketsend() { try { s = new Socket("localhost", 9999); } catch (IOException e) { System.out.println("Could not listen on port: 9999"); } } public void send(String data) {
try {
PrintWriter ud = new PrintWriter (s.getOutputStream(),true); BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
ud.println(data); ud.flush(); } catch (IOException e) { System.out.println("Could not listen on port: 9999");
} }
}
brugere ( appleten som vises ) ------------------------------------------------------------- package tower;
while (true) { Socket connection = server.accept(); ServerThread thread = new ServerThread (connection); // <-- Denne klasse er en tråd. thread.start(); }
... ServerThread:
public class ServerThread extends Thread { private BufferedReader reader;
public ServerThread (Socket connetion) { reader = new BufferedReader( new InputStreamReader( connection.getInputStream() ) ); }
public void run() { String line = ""; while (true) { line = reader.readLine(); if (line.startsWith("LOGIN") == true) { String[] brugerdata = line.split(","); String brugernavn = brugerdata[1]; String x = brugerdata[2]; String y = brugerdata[3]; String bolle = brugerdata[4]; System.out.println("inde: " + brugernavn + ""); } else { System.out.println(line); } } } }
Måske der skal lidt smårettelser til, men nu er den i hvert fald forberedt for at modtage mere en én klient.
Det er muligt, ja. Jeg vil dog ikke mene det er nødvendigt medmindre man har noget bevægelse i sin applikation. Men jeg er ikke så meget inde i lige præcis applets.
hejsa igen.. nu har jeg en fejl mere.. nu virker det med buffergraphic.. men nu skal man først trykke på appletten før at alt grafikken kommer frem.. hvordan laver jeg sådan at grafikken kommer med det samme??
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException at tower.brugere.paint(brugere.java:57) at tower.brugere.update(brugere.java:74) at sun.awt.RepaintArea.updateComponent(Unknown Source) at sun.awt.RepaintArea.paint(Unknown Source) at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.