Avatar billede kornum Nybegynder
29. oktober 2004 - 21:31 Der er 12 kommentarer og
1 løsning

Hjælp til GUI og Tekstoutput

Hej

Vi sidder nogle stykker og er ved at lave et IT projekt, men er kørt fast.

Kort om projektet:
Vi skal lave en GUI, hvori vi skal behandle TSP-problemet, vi har fået Algoritmerne, og har fået det til at køre når vi bare skal have et tekstoutput i konsollen.

Vores problem ligger nu i at vi skal hente de skrevne output over i et JTextField.

vi har lavet en Actionlistener, som skulle køre programmet:

private class JButtonListener implements ActionListener {
               
public void actionPerformed(ActionEvent e) {
           
Object source = e.getSource();
if (source == KorKnap) {   
//det er her vi skal kalde programmet SimpleDriver, som tager et filnavn som parameter.
}
}
}

Ideen er at når vi har åbnet en fil med en JFileChooser, når så vi trykker på knappen kør, er det meningen vi skal eksekvere programmet, og få det tekstoutput som kommer ind i vores tekstarea.

Vi har lagt alle filerne op så i kan se dem på http://samnet12.sdu.dk/~jskov03/TSP.rar

Det vi mangler er en måde at køre SimpleDriver på når vi trykker på kør.
Avatar billede arne_v Ekspert
29. oktober 2004 - 21:37 #1
Er det et seperat program I vil køre ?

Så noget a la:

      Process p = Runtime.getRuntime().exec("cmd /c java SimpleDriver " + filename);
      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line;
      while((line = br.readLine()) != null) {
        tf.setText(tf.getText() + line);
      }
Avatar billede arne_v Ekspert
29. oktober 2004 - 21:42 #2
I kan selvfølgelig også kalde SimpleDriver, men så skal I have ændret
System.out.println kaldene til noget andet
Avatar billede kornum Nybegynder
29. oktober 2004 - 21:45 #3
Takker for det hurtige svar...

VI har faktisk prøvet at ændre vores system.out.printlin til TextOutputFelt.setText(<<parameteren>>);

Vi kunne ikk få den til at kører simpleDriver da den er static void main... Og hellere ikk da vi lavede den om til Constructor med en samme syntax på outputet...
Avatar billede kornum Nybegynder
29. oktober 2004 - 21:45 #4
Men yep det er et eksternt program vi vil kører...
Avatar billede arne_v Ekspert
29. oktober 2004 - 21:48 #5
Man kører et eksternt program og hapser output som vist ovenfor (og det læser
System.out.println's).
Avatar billede arne_v Ekspert
29. oktober 2004 - 21:48 #6
String[] args = { filename };
SimpleDriver.main(args);

burde gøre det sidste
Avatar billede kornum Nybegynder
29. oktober 2004 - 21:57 #7
Vi kan ikk lige overskue din "struktur", og har prøvet en del...

Det nederste svar du giver, er det vist vi laver simpleDriver om til en constructor istedet for void main...? Eller hvordan vil du gøre hvis vi ville lave SimpleDriver som en metode vi kalder?
Avatar billede arne_v Ekspert
29. oktober 2004 - 22:00 #8
overskue struktur ??

//det er her vi skal kalde programmet SimpleDriver, som tager et filnavn som parameter.

erstattes af

Process p = Runtime.getRuntime().exec("cmd /c java SimpleDriver " + filename);
      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line;
      while((line = br.readLine()) != null) {
        tf.setText(tf.getText() + line);
      }

tf rettes til navnet på jeres text felt

test
Avatar billede _carsten Nybegynder
29. oktober 2004 - 22:49 #9
I kan sådan set copy/paste Arne's løsning ind

private class JButtonListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {

        Object source = e.getSource();
            if (source == KorKnap) {
                try{
            Process p = Runtime.getRuntime().exec("cmd /c java SimpleDriver " + Filnavnet);
                    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                        String line;
                        while((line = br.readLine()) != null) {
                            TextOutputFelt.textArea.append(line + "\n");
                        }
              }
              catch(java.io.IOException i){
              }
            }
}
Avatar billede kornum Nybegynder
29. oktober 2004 - 23:17 #10
Vi fandt en løsning hvor vi kunne kalde simpleDriver hvor denne indholdt en constructor som returnerede de rigtige værdier til vores textArea...

VI sys det er mest fair hvis arne_v får pointene da han ledt os på sporet.. Er det ok? Så smid et svar Arne og pointene er dine..
Avatar billede arne_v Ekspert
29. oktober 2004 - 23:19 #11
svar
Avatar billede _carsten Nybegynder
29. oktober 2004 - 23:20 #12
Selvfølgelig
Avatar billede kornum Nybegynder
29. oktober 2004 - 23:34 #13
Takker for hjælpen...!
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