Avatar billede kohaar Nybegynder
16. november 2003 - 16:03 Der er 4 kommentarer og
1 løsning

Indhent kordinater fra fil

Jeg er ved at lave et program hvor jeg henter nogle kordinater fra en fil, og så laver dem om til figure i et program. Kan bare ikke rigtig få det til at fungere...

Her er min kode:

import java.io.*;
import java.awt.*;
import java.math.*;


class FileRead extends Frame {

      public void paint(Graphics g)
    {
     
        String record = null;
        try {

      FileReader fr = new FileReader("myfile.txt");
          BufferedReader br = new BufferedReader(fr);

          record = new String();
          while ((record = br.readLine()) != null) {
         
          int[] ia = new int[record.length()];
          for(int i = 0; i < 10; i++) {
          int f = i * 2;
          g.drawString("test",200,f);
          }
        }

        } catch (IOException e) {
       
          e.printStackTrace();
        }

    }
  }
 

Mit problem er at få det til at stå rigtig på skærmen. Jeg er ikke så hård til java, men vil mene, at 0,0 i drawString er øverst til venstre, men skriver jeg 0,0 går den så langt til venstre, at jeg ikke kan se det der står? Kan i se hvad der er galt, eller måske fortælle mig lidt om drawString?
Avatar billede kohaar Nybegynder
16. november 2003 - 16:27 #1
Er lidt svært at forklare, så hvis det ikke giver mening, så skriv lige...
Avatar billede kohaar Nybegynder
16. november 2003 - 17:04 #2
Kommer lige med et bedre eksempel...

import java.io.*;
import java.awt.*;
import java.math.*;

class FileRead extends Frame {

      public void paint(Graphics g)
    {
     
        String record = null;
        try {

      FileReader fr = new FileReader("myfile.txt");
          BufferedReader br = new BufferedReader(fr);

          record = new String();
          while ((record = br.readLine()) != null) {
          int[] ia = new int[record.length()];
          for(int i = 0; i < ia.length; i++) {
              ia[i] = Integer.parseInt(record.substring(i,i+1));
              g.drawString("test",ia[i],ia[i]);
          } 
          }
        } catch (IOException e) {
       
          e.printStackTrace();
        }
    }
  }

I min fil står følgende: 77799. Vil mene, at mit array vil komme til at se sådan ud:
ia[0] = 7
ia[1] = 7
osv..

Når jeg skriver g.drawstring kan jeg ikke se teksten. Kun hvis jeg tilføjer + 100
Hvorfor er det sådan?
Avatar billede _carsten Nybegynder
16. november 2003 - 18:19 #3
Du skal betragte din skærm/frame  som er koordinatsystem, 0,0 (x,y) er punktet længst til venstre og helt i top, desto større værdi x har, jo længere mod højre starter du med at skrive og desto større værdi y har, nærmer du dig bunden af skærmen/framen

Punkt 0,0 ligger helt ude til venstre oppe bag titellinien i din frame

Prøv at rette din for løkke til nedenstående og se forskellen

      for(int i = 0; i < 10; i++) {
          int f = i * 10 + 50;
          g.drawString( record,100,f);
          g.drawString("Test",100,100);
      }
Avatar billede _carsten Nybegynder
16. november 2003 - 19:17 #4
Prøv at køre nedenstående eksempel, det fremmer måske forståelsen.
Her kan du se at øverste linie starter bag titellinien

import java.awt.*;

class FileRead extends Frame {

    public FileRead(){
        super("drawString metoden");
        setSize(500,500);
    }
      public void paint(Graphics g){
          int x = 0, y = 0;
          for(int i = 0; i < 10 ; i++){
              y = i * 5;
         
              g.drawLine(x, y,150, 150 + i * 20);
              g.drawString("Linien starter i X,Y:  " + x + "," + y +
                          "    og slutter i X,Y:  " + (x + 155) + ","
                          +(150 + i * 20), 155, 150 + i * 20);
          }
    }
     
      public static void main(String args[]){
          new FileRead().show();
      }
}
Avatar billede kohaar Nybegynder
17. november 2003 - 15:11 #5
Det virkede fint... Takker
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