JFrame ausgabe von Werten

Jannis96

Mitglied
Guten Tag,

aktuell habe ich ein JFrame mit einem Auswahlmenü (JComboBox). Dort kann ich zwischen mehrern Variablen wählen. Nun möchte ich, dass jedes mal eine andere Ausgabe gemacht wird. Was muss ich dafür tun? Kann mir mal jemand ein Beispiel zurecht machen?

Ausgegeben werden soll das Ergebniss eines anderen JAVA-Programms.
 
Was hast du bereits gemacht, dann können wir auf deinem Beispiel aufbauen. Des Weiteren verschiedene Java Programme können nicht so einfach miteinander kommunizieren. Da braucht man irgendeine Verbindung (ein Programm ruft das andere auf geht mit Streams/TCP/UDP/WS/...).
 
Also,

ich habe jetzt die einzelnen Programme in eins zusammengefasst.

Jetzt möchte ich halt den Teil:

Java:
    System.out.println(" Für welche Tankstelle möchten Sie die Preise wissen? ");
    System.out.println(" ");
    System.out.println(" 01 - HEM - Ort1");
    System.out.println(" ");
    System.out.println(" 02 - HEM - Ort2");
    System.out.println(" ");
    System.out.println(" 03 - ARAL - Ort3");
    System.out.println(" ");
    System.out.println(" Angaben ohne gewähr");
    System.out.println(" ");
    double tanke = InOut.readDouble(" Bitte Auswahl angeben: ");

(Ja, ich weiß das double zu groß ist :lol: )

durch ein JFrame ersetzen.

Bei den verschiedenen möglichkeiten sollen natürlich die verschiedenen Preise erscheinen...
 
Nettes Schnippsel. Wo bekommst du denn die Daten her? Sind die Statisch oder werden die über eine Datei geladen oder sonst woher?
 
Meine Daten hole ich hier:

Java:
    try {
      htmlWriter = new PrintWriter(new BufferedWriter(new FileWriter("HTML.txt")));
      //                 Clever-Tanken ID
      if (tanke == 01 || tanke == 1 ) {    //Halchter
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/8142"); 
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
      } // end of if
      
      if (tanke == 02 || tanke == 2 ) {     //Schladen
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/7870");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
      } // end of if
      
      if (tanke == 03 || tanke == 3 ) {     //Floethe
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/27052");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
      } // end of if
      
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (htmlWriter != null){
        htmlWriter.flush();
        htmlWriter.close();
      }
    }
 
Wie willst du dann die html-Datei in einem JFrame anzeigen? Du brauchst irgendwas um die Daten richtig rauszuparsen.
 
Anschließend wird aus der HTML die enstsprechende Zeile herrausgesucht:

Java:
  FileReader html = new FileReader("HTML.txt");
    BufferedReader br = new BufferedReader(html);
    
    String dieselhtml =br.readLine();
    int dieselzahl = 0;
    while (dieselzahl <= zeile) {
      
      dieselhtml = br.readLine();
      
      dieselzahl++;
    } // end of while

Danach wird die Zeile in einzelne Parts zerlegt damit ich dann den Preis habe "1.489"

Java:
String benzinpreis = benzinhtml;
    String[] bparts = benzinpreis.split("'");
    String part1benzin = bparts[0]; 
    String part2benzin = bparts[1];
    
    System.out.println(" " + part2benzin);

und der - part2benzin - ist dann die Variable in der der Preis steht.

Diese lasse ich zurzeit auf der Console ausgeben, möchte die aber dann im JFrame ausgegeben haben.
 
Um das mal zu vereinfachen Poste doch mal den ganzen Code bitte hier herein, dann kann man dir vielleicht helfen.
 
Nur als Info dazu:

Ich bearbeite momentan, deswegen wird er nicht einwandrei funktionieren. Ich habe es in mehrere Methoden unterteilt aber wenn ich am ende der ersten methode "auslesen();" setze gibt er mir nur ein fehler aus... Da bin ich noch am probieren.
Außerdem ist "printGregorianCalendarDate(); " unten auskommentiert weil sonst auch immer ein fehler erscheint.

Der unterste Teil ist dafür da, damit ich mir ein Verlauf der Preise notieren kann.

Was ich möchte ist das der Teil mit der Preis ausgabe im JFrame ausgegeben wird.

Java:
import java.io.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.GregorianCalendar; 
import java.net.URL;
import java.util.Scanner;
import java.net.URL;

public class beni{
  public static void main(String[] args) throws IOException {
    
    System.out.println(" Für welche Tankstelle möchten Sie die Preise wissen? ");
    System.out.println(" ");
    System.out.println(" 01 - HEM - Halchter");
    System.out.println(" ");
    System.out.println(" 02 - HEM - Schladen");
    System.out.println(" ");
    System.out.println(" 03 - ARAL - Floethe ");
    System.out.println(" ");
    System.out.println(" Angaben ohne gewähr");
    System.out.println(" ");
    double tanke = InOut.readDouble(" Bitte Auswahl angeben: "); 
   
    // HTML auslesen
    
    double zeile = 0;
    String xx = "null";
    
    PrintWriter htmlWriter = null;
    try {
      htmlWriter = new PrintWriter(new BufferedWriter(new FileWriter("HTML.txt")));
      //                 Clever-Tanken ID
      if (tanke == 01 || tanke == 1 ) {    //Halchter
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/8142"); 
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 229;
        xx = "Halchter";
      } // end of if
      
      if (tanke == 02 || tanke == 2 ) {     //Schladen
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/7870");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 229;
        xx = "Schladen";
      } // end of if
      
      if (tanke == 03 || tanke == 3 ) {     //Floethe
        URL url = new URL("http://www.clever-tanken.de/tankstelle_details/27052");
        BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while((line=r.readLine())!=null) 
        htmlWriter.println(line)  ;
        zeile = 227;
        xx = "Floethe";
      } // end of if
      
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (htmlWriter != null){
        htmlWriter.flush();
        htmlWriter.close();
      }
    } 
  } 
  
  public void auslesen (String xx, double zeile) throws IOException{
    
    // Zeile auslesen  
    
    FileReader html = new FileReader("HTML.txt");
    BufferedReader br = new BufferedReader(html);
    
    String dieselhtml =br.readLine();
    int dieselzahl = 0;
    while (dieselzahl <= zeile) {
      
      dieselhtml = br.readLine();
      
      dieselzahl++;
    } // end of while
    
    String benzinhtml =br.readLine();
    int benzinzahl = 0;
    while (benzinzahl <= 14) {  
      
      benzinhtml = br.readLine();
      
      benzinzahl++;
    } // end of while 
    
    //Benzin auslesen
    
    System.out.println("");
    System.out.println(" " + xx);
    System.out.println(" _______________");
    System.out.println(" Super");
    System.out.println("");
    
    String benzinpreis = benzinhtml;
    String[] bparts = benzinpreis.split("'");
    String part1benzin = bparts[0]; 
    String part2benzin = bparts[1];
    
    System.out.println(" " + part2benzin);
    
    System.out.println(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
    
    //Diesel auslesen
    
    System.out.println(" _______________");
    System.out.println(" Diesel");
    System.out.println("");
    
    String dieselpreis = dieselhtml;
    String[] dparts = dieselpreis.split("'");
    String part1diesel = dparts[0]; 
    String part2diesel = dparts[1];
    
    System.out.println(" " + part2diesel);
    
    System.out.println(" ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯");
    
  } 
  
  public static void preisVerlauf (String xx, String part2benzin, String part2diesel) {
    //Datum
    
    //printGregorianCalendarDate(); 
    
    //Benzin
    
    PrintWriter aWriter = null;
    try {
      aWriter = new PrintWriter(new BufferedWriter(new FileWriter("Verlauf/" + xx + "/Verlauf.txt",true))); 
      aWriter.println("Benzin: " +part2benzin + " Euro")  ;
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (aWriter != null){
        aWriter.flush();
        aWriter.close();
      }
      
    } // end of if
    
    //Diesel
    
    PrintWriter aaWriter = null;
    try {
      aaWriter = new PrintWriter(new BufferedWriter(new FileWriter("Verlauf/" + xx + "/Verlauf.txt",true))); 
      aaWriter.println("Diesel: " +part2diesel + " Euro")  ;
      aaWriter.println(" ");  
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (aaWriter != null){
        aaWriter.flush();
        aaWriter.close();
      }
      
    } // end of if
  }
  
  static void printGregorianCalendarDate(String xx) {
    
    GregorianCalendar now = new GregorianCalendar();
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);   
    df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); 
    String zeit = (df.format(now.getTime()));
    PrintWriter ppWriter = null;
    try {
      ppWriter = new PrintWriter(new BufferedWriter(new FileWriter("Verlauf/" + xx + "/Verlauf.txt",true)));
      ppWriter.println(zeit)  ;
    } catch (IOException ioe) {
      ioe.printStackTrace();
    } finally {
      if (ppWriter != null){
        ppWriter.flush();
        ppWriter.close();
      }
    }   
  }
}
 
Also wie hast du dir das vorgestellt? Du hast ein JFrame wo du als erstes auswählen kannst, welche Tankstelle du die Preise aktualisieren und anzeigen möchtest.

Das sollte mittels einer JComboBox funktionieren.

Als Verlaufsanzeige kannst du eine JTextArea verwenden.

Wenn du jeweils die Tanke auswählst aktualisiert sich die Datei mit dem Verlauf, danach lädst du die Datei in deine TextArea.

Im Internet gibt es genügend Tutorials die dir dabei helfen.

Bei weiteren Fragen zögere bitte nicht.
 

Neue Themen


Zurück
Oben