Avatar billede lakana Nybegynder
03. maj 2006 - 21:09 Der er 7 kommentarer og
1 løsning

sætte graphics g på et objekt

hejsa!!
sidder her med at lille problem.. måske stort, ved ikk..

i min fil hvor jeg tegner og painter i min applet, har jeg følgende:

public void userCarrying(Graphics g, String username, int xA, int yA)
{
    /* Bruger ankommet */
    g.drawImage(figur,xA,yA,this);
    g.drawString(username,xA,yA+65);
}


men hvordan kan jeg bruge split samt kalde graphics g, i dette, som ligger i en anden fil?? det skal siges at jeg importere denne fil også:

if (line.startsWith("LOGIN") == true)
                    {
                        String[] brugerdata = line.split(",");
                        String brugernavn = brugerdata[1];
                        String bolle = brugerdata[4];
                       
                        System.out.println("inde: " + brugernavn + "");
                        brugere.userCarrying(brugernavn,0,0);
                       
                    }
                    else
                    {
                        System.out.println(line);
                    }





hvordan får jeg sat graphics g på her??

brugere.userCarrying("HER",brugernavn,0,0);
Avatar billede lakana Nybegynder
03. maj 2006 - 21:55 #1
hvordan gøres dette
Avatar billede lakana Nybegynder
04. maj 2006 - 14:56 #2
ingen der kan??
Avatar billede _carsten Nybegynder
05. maj 2006 - 23:18 #3
Jeg fatter simpelthen ikke spørgsmålet.
Avatar billede lakana Nybegynder
05. maj 2006 - 23:59 #4
har 2 filer som er afhængig af hinanden..

den ene hedder lyt - som er en server som kører over via dosprompt
og den anden brugere - som er appletten

min applet har en public void hvor den kalder en bruger som er ankommet på serveren

så når en bruger ankommer, sender den kommandoen tilbage, men hvordan kan jeg sætte et graphics-tingest på, så den kan komme videre i aplletten?

FUNKTIONEN I APPLETTEN:

public void userCarrying(Graphics g, String username, int xA, int yA)
{
    /* Bruger ankommet */
    g.drawImage(figur,xA,yA,this);
    g.drawString(username,xA,yA+65);
}


DETTE SKER I SERVEREN:
if (line.startsWith("LOGIN") == true)
                    {
                        String[] brugerdata = line.split(",");
                        String brugernavn = brugerdata[1];
                        String bolle = brugerdata[4];
                       
                        System.out.println("inde: " + brugernavn + "");
                        brugere.userCarrying(brugernavn,0,0);
                       
                    }
                    else
                    {
                        ....
                    }






MEN hvordan kan jeg indsætte brugere.userCarrying("HER",brugernavn,0,0);
hvor HER skal være Graphics g foreksempel?

den  skal jo bruge et graphics objekt her:

public void userCarrying(Graphics g, String username, int xA, int yA)
Avatar billede _carsten Nybegynder
06. maj 2006 - 12:46 #5
Hvis vi går udfra dette hænger sammen med tidligere spm, og der skal skrives i appletten, så skal du bruge applettens Graphics object, som jo er bufferGfx.
Du skal muligvis have selve appletten med som parameter for at lave en repaint() hvis det skulle blive nødvendigt.


brugere.userCarrying(bufferGfx, brugernavn,0,0);
Avatar billede lakana Nybegynder
06. maj 2006 - 15:22 #6
ja.. men bufferGfx er i appletten og ikke serveren..

vil kalde funktionen i appletten, i serveren
Avatar billede _carsten Nybegynder
06. maj 2006 - 16:59 #7
Med et Graphics object kan du skrive i appletten, men du IKKE skrive så meget som et pip med et Graphics object på serveren.
På serveren må du bruge jsp, servlets, asp, php etc.
Avatar billede lakana Nybegynder
06. maj 2006 - 18:09 #8
hmm, ved ikke om jeg forstår..

ser dette rigtigt ud?

appletten:

package tower;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.io.*;
import java.net.*;
import java.io.BufferedOutputStream.*;
import java.awt.MediaTracker;

import tower.skrivemetode;
import tower.socketsend.*;

public class brugere extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn;
socketsend ss = new socketsend();
int x;
int y;
    boolean down = false;
    MediaTracker tr;

  public brugere()    {
        ss.send("LOGIN,Guest,0,0,bolle.gif");
  }

    public void init(){
        /* Sætter start kordinater */
        x = 0;
        y = 0;
        /* Brugernavnet på brugeren */
        brugernavn = "Gæst 839";
     
        /* Tilføjer en mouselistener */
        addMouseListener(this);
     
        /* Tilføjer data, baggrunden og figuren */
        figur = getImage(getCodeBase(),"normal.gif");
        baggrund = getImage(getCodeBase(),"room.gif");
        tr = new MediaTracker(this);
        tr.addImage(baggrund, 0);
    }

    public void newUser(Graphics g, String brugernavn, int x, int y)
    {
        g.drawImage(figur,x,y,this);
    }
    public void paint(Graphics g){
      if(offScreen == null){
          try {
              tr.waitForID(0);
              offScreen = createImage(getWidth(), getHeight());
              bufferGfx = offScreen.getGraphics();
              bufferGfx.drawImage(baggrund,0,0, this);
          } catch (InterruptedException ex) {
              ex.printStackTrace();
          }

      }
    g.setColor(Color.WHITE);
      g.drawImage(offScreen,0,0,this);
      g.drawString(brugernavn,x,y+65);

    }

      public void mouseClicked(MouseEvent e)  {
        /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
        x = e.getX() - 20;
        y = e.getY() + 5;
        if(!down)
          bufferGfx.drawImage(figur, x, y, this);
        down = true;

        repaint();
    }
 
    public void mousePressed(MouseEvent e) {
        /* Når en bruger trykker i appletten, registerer den kordinater. Nu sætter vi det om */
        x = e.getX() - 20;
        y = e.getY() + 5;
          /* Genskaber appletten for nye data */
        bufferGfx.drawImage(baggrund,0,0,this);
        bufferGfx.drawImage(figur, x, y, this);
        repaint();
    }
 
    public void update(Graphics g){
        paint(g);
    }
 
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}














serveren som kører som dosprompt:

package tower;
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;


import tower.brugere.*;
public class lyt
{
Graphics hej;
  public static void main(String[] arg)
  {
    new lyt();
  }

  public  lyt()
  {
        try
        {
            ServerSocket server = new ServerSocket( 9999 );
            System.out.println( "[Server] Online" );
           
            while (true)
            {
                Socket connection = server.accept();
                ServerThread thread = new ServerThread (connection); // <-- Denne klasse er en tråd.
                thread.start();
            }
        }
        catch ( IOException e )
        {
          System.out.println( "[Server] I/O error" );
        }
    }

    private class ServerThread extends Thread
    {
        private BufferedReader reader;
     
        public ServerThread (Socket connection) throws IOException
        {
            reader = new BufferedReader(new InputStreamReader(connection.getInputStream() ) );
        }
     
        public void run()
        {
            try
            {
                String line = "";
                while (true)
                {
                    line = reader.readLine();
                    if (line.startsWith("LOGIN") == true)
                    {
                        String[] brugerdata = line.split(",");
                     
                       
                        String brugernavn = brugerdata[1];
                     
                       
                        String bolle = brugerdata[4];
                       
                        System.out.println("inde: " + brugernavn + "");
                        brugere.newUser(hej,brugernavn,0,0);
                       
                    }
                    else
                    {
                        System.out.println(line);
                    }
                }
            }
            catch (Exception e)
            {
                System.out.println("Server error: " + e);
            }
        }
    }
}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester