Frage von SuperSpace, 70

Java Tabelle mit HTML Layout erstellen?

Hallo!

Ich möchte aus einer großen HTML Tabelle einige Informationen auslesen und dann in einer Tabelle anzeigen lassen, die möglichst genau so aussehen soll. Die Informationen lese ich im Moment mit folgendem Code heraus:

 public static void WebTable(String s){
    String html = //musste den Link entfernen, da dieser nicht öffentlich gemacht werden darf;
   
      try {
         Document doc = Jsoup.connect(html).get();
         Elements tableElements = doc.select("table");


         ArrayList<String> list = new ArrayList<String>();
       
         Elements tableRowElements = tableElements.select(":not(thead) tr");
         for (int i = 0; i < tableRowElements.size(); i++) {
             Element row = tableRowElements.get(i);
             Elements rowItems = row.select("td");
             if(rowItems.size() == 7){
            
             if(rowItems.get(0).text().equalsIgnoreCase(klasse.replaceAll(" ", ""))){

                 for (int j = 0; j < rowItems.size(); j++) {
                    list.add(rowItems.get(j).text());
                }  }     
         }
         }
     } catch (IOException e) {
         e.printStackTrace();
      }
}

Also habe ich nun alle benötigten Daten in einer ArrayList. Nun möchte ich diese einfach in eine Tabelle eintragen. (Also von links nach rechts einfach auffüllen). Die Tabelle soll jedoch aussehen, wie auf dem Bild gezeigt.

http://goo.gl/4zWlSe

Hoffe mir kann jemand weiterhelfen.

Lg SuperSpace

Expertenantwort
von KnusperPudding, Community-Experte für Java, 7

Ich nehme an du verwendest eine Java-JTable oder einen JavaFX Tableview, oder? 

Mit JSoup kann man eigentlich relativ gut Werte auslesen. Allerdings frage ich mich gerade: Wo scheitert es bei dir?

Nachvollziehbar ist für mich das Problem daher nicht, da man dazu entsprechend deine Website mit der Tabelle bräuchte, die du aber nicht veröffentlichen willst.

Demnach verwende bitte ein anderes öffentliches Beispiel, was du als Referenz verwenden kannst. Und am ende kannst du es auf deine Tabelle übertragen.

Du hast Code, der eben gewisse Dinge deiner Tabelle abfrägt, was eben auf nur dein Beispiel zutreffen wird, wie:

 if(rowItems.size() == 7){

Jedoch um in Java eine Tabelle darzustellen, reicht eine einzelne Liste nicht aus. Hierfür eignet sich entweder eine zweidimensionale Array oder eine Liste mit Listen wie:

List<List<String>> liste;

Oder Bean-Objekte wie:

class VertretungsplanZeile {
   String klasse;
   String stunde;
   ...
}

welche du in einer Liste Speichern kannst.

List<VertretungsplanZeile> zeilen = new ArrayList<>();
zeilen.add(new VertretungsplanZeile("10A", "5");
Antwort
von RageMode, 29

Achtung: Es handelt sich hierbei um JavaScript nicht im Java sind zwei völlig unterschiedliche Dinge ;)

Vielleicht findest du in diesem Thread was: http://forum.chip.de/html-css-javascript/tabelle-javascript-1643540.html

Kommentar von SuperSpace ,

Das hilft mir leider nicht weiter. Könntest du mir sagen, wie ich vorgehen muss?

Kommentar von RageMode ,

Du nummerierst die Zellen durch am besten so das du später auch mit einer Variable drauf zugreifen kannst also zum beispiel zellexy x für spalte und y für Zeile dann schreibst du zwei Schleifen die äußere zählt immer die Zeilen hoch und in der Zeilen-Schleife ist dann noch eine zweite Schleife die die Spalten durch zählt dann musst du die Daten nur noch der Reihenfolge ordnen und kannst sie Stück für Stück aus dem Array in die Tabelle schreiben hilft das?

Kommentar von SuperSpace ,

Meinst du in der Html Tabelle selbst oder wo soll ich die Zellen
numerieren? Ich kann den Html Code nicht verändern.



Kommentar von SuperSpace ,
Kommentar von RageMode ,

Hm gibt es echt keine Möglichkeit den Code zu modifizieren? Du müsstest den Einzelnen Zellen nur eine ID geben. Ich vermute das ganze ist für eine Schulhomepage oder?

Kommentar von SuperSpace ,

Genau. Es gibt leider überhaupt keine Möglichkeit :/ Gibt es nicht die möglichkeit, diese Tabelle einfach zu erstellen und dann nacheinander zu füllen?

Kommentar von RageMode ,

Anstatt die Tabelle unterhalb der ersten Zeile (wo die Beschreibung drin steht) zu füllen schreibst du sie einfach neu und zwar so: for (var f=0; f

Dein Wert

}}

Kommentar von RageMode ,

ich hoffe du kannst das Lesen und nachvollziehen was ich da gemacht habe musst entsprechende Werte austauschen und kannst auch gerne nochmal nachfragen

Kommentar von RageMode ,

F*** hat die app jetzt echt meinen ganzen Text aufgelöst? -.-

Kommentar von RageMode ,

hab das ganze jetzt nochmal schön in pastebin: http://pastebin.com/DaswEf08

Keine passende Antwort gefunden?

Fragen Sie die Community