HTML Tabelle nur so lange erzeugen bis Höhe erreicht

internet

Top Contributor
Hallo zusammen,

ich möchte mir dynamisch eine HTML Tabelle erzeugen.
Um die Tabelle habe ich ein <div>.
Dieses <div> hat eine Höhe, also als Beispiel 10mm: <div height: 10mm>

Also das Gründgerüst sieht so aus:
Code:
<div height: 10mm>
   <table>
     <tr> 
       <td>
       <td>
     <tr>
....

Nun möchte ich in einer Schleife die Tabelle mit den Zeilen nur so lange generieren lassen, bis die Höhe erreicht wurde.

Wie kann ich so etwas machen? Ich komme leider gar nicht weiter.
 

HarleyDavidson

Bekanntes Mitglied
Du musst natürlich wissen, wie hoch eine Zeile der Tabelle ist.
Dann ist das mit einer Schleife leicht realisierbar:

Java:
int zeilenhoehe = 10; 
int gesamthoehe = 100;
int aktuelleHoehe = 0;

while (aktuelleHoehe <= gesamtHoehe)
{
   System.out.println("<tr><td>Zeileninhalt</td></tr>");
   aktuelleHoehe = aktuelleHoehe + zeilenhoehe;
}
 

internet

Top Contributor
Ja das ist klar. Das Problem ist, dass ich die Zeile dynamisch erzeuge und somit eine Zeile auch einen Umbruch haben kann wenn der Text länger ist. Daher kann ich die Zeilenhöhe nicht fix angeben
 

arilou

Bekanntes Mitglied
Dann wird's deutlich komplizierter.
Du brauchst eine Render-Engine, der du in jedem Schleifendurchlauf die "bisherige Version" übergibst und danach abfragst/prüfst, wie viele Pixel dieser div denn nun Höhe hat.
Damit die Render-Engine aber passabel arbeiten kann, will sie eine "fertige Html-Seite", also _mit_ Tabellen-Abschluss usw. Eine solche Version müsstest du also auch noch "nebenher mitführen".
 

arilou

Bekanntes Mitglied
Java:
String getHtmlPage( int hoeheMM ) {
  String html_to_generate = "<html><body>\n<div><!-- height: " + hoeheMM + "mm -->\n<table>\n" ;
  String html_foot = "</table></div></body></html>";
  String html_test ;
  int table_height_mm ;

  do {
    html_to_generate += "<tr><td /></tr>" ;
    html_test = html_to_generate + html_foot ;
    // erzeuge/benutze Render-Engine auf html_test;
    // table_height_mm = render_engine.getTagVerticalSize( "<table>" ); // etwas entsprechendes eben
  } while( table_height_mm < hoeheMM );
  // jetzt ist html_to_generate evtl genau 1 <tr> zu hoch, also wieder entfernen;
  // dann restlichen Seiteninhalt anhaengen.
  return html_to_generate ;
}
In etwa sowas.
Eine Render-Engine ist im Prinzip das Herzstück eines Webbrowsers.
 
Zuletzt bearbeitet:

dzim

Top Contributor
Weiss nicht, ob es was bringt, aber du könntest den Content in einen JavaFX WebView packen (muss aber angezeigt werden, sonst wird das nichts) und hinterher per JavaScript die Höhe auslesen. Aber trivial ist das nicht und sicher auch nicht performant, denn der WebView muss nach jeder Zeile geupdated werden - und der allerschnellste ist er auch nicht...
 

internet

Top Contributor
@arilou
Danke für Deine Antwort.
Aber wie sieht bei Dir die Methode getTagVerticalSize() aus?

Problem ist: Wie bekomme ich pro Schleifendurchlauf die Größe bzw. Höhe der Zeile?
Das ist eigentlich mein Hauptproblem - wie kann ich das lösen?

Für alles andere sehe ich aktuell kein Problem.
 

arilou

Bekanntes Mitglied
Problem ist: Wie bekomme ich pro Schleifendurchlauf die Größe bzw. Höhe der Zeile?
Das ist eigentlich mein Hauptproblem - wie kann ich das lösen?
Indem du nach jeder weiteren hinzugefügten Zeile das bisher erstellte Html-Dokument durch einen Webbrowser anzeigen lässt, und dann den Browser fragst "wie hoch ist die Tabelle denn jetzt?".

Anstelle eines kompletten Webbrowsers nimmst du nur dessen "Kernprogramm", die "Render-Engine". Die kann "ein Html-Dokument anzeigen", ohne es auf dem Bildschirm anzuzeigen, also "verborgen". Eine Methode ".getTagVerticalSize()" (oder so ähnlich) muss diese Engine anbieten - vermutlich heißt sie (ganz) anders.

D.h. du musst dir ergoogeln oder sonstwie herausfinden, was es für Render-Engines gibt, welche davon sich halbwegs einfach in dein Programm einbauen lässt, wie man sie aufruft, wie man von ihr Auskünfte über das gerenderte Ergebnis abfragt, ...

Das hört sich kompliziert und nach viel Arbeit an. Und ist es auch - sowohl kompliziert als auch viel Arbeit.

Außerdem stimmt das Ergebnis dann auch nur (halbwegs sicher) für Webbrowser, die auf genau dieser Engine beruhen. Andere Webbrowser zeigen das Ergebnis ggf. etwas anders an, weil sie z.B. CSS-Angaben ein wenig anders interpretieren, oder eine andere Schriftart verwenden, oder der Benutzer die Anzeige auf "125% Größe" eingestellt hat, oder oder oder.

Mich wundert immer wieder, wie Menschen einfach nicht verstehen wollen, dass Html gerade nicht dafür geschaffen wurde, "überall gleich" angezeigt zu werden... Dafür gibt's PDF.
 

dzim

Top Contributor
arilou hat gesagt.:
Außerdem stimmt das Ergebnis dann auch nur (halbwegs sicher) für Webbrowser, die auf genau dieser Engine beruhen. Andere Webbrowser zeigen das Ergebnis ggf. etwas anders an, weil sie z.B. CSS-Angaben ein wenig anders interpretieren, oder eine andere Schriftart verwenden, oder der Benutzer die Anzeige auf "125% Größe" eingestellt hat, oder oder oder.

Mich wundert immer wieder, wie Menschen einfach nicht verstehen wollen, dass Html gerade nicht dafür geschaffen wurde, "überall gleich" angezeigt zu werden... Dafür gibt's PDF.
Dem stimme ich völlig zu!

---------------------------------------------------------------------

arilou hat gesagt.:
Indem du nach jeder weiteren hinzugefügten Zeile das bisher erstellte Html-Dokument durch einen Webbrowser anzeigen lässt, und dann den Browser fragst "wie hoch ist die Tabelle denn jetzt?".

Anstelle eines kompletten Webbrowsers nimmst du nur dessen "Kernprogramm", die "Render-Engine". Die kann "ein Html-Dokument anzeigen", ohne es auf dem Bildschirm anzuzeigen, also "verborgen". Eine Methode ".getTagVerticalSize()" (oder so ähnlich) muss diese Engine anbieten - vermutlich heißt sie (ganz) anders.

D.h. du musst dir ergoogeln oder sonstwie herausfinden, was es für Render-Engines gibt, welche davon sich halbwegs einfach in dein Programm einbauen lässt, wie man sie aufruft, wie man von ihr Auskünfte über das gerenderte Ergebnis abfragt, ...

Das hört sich kompliziert und nach viel Arbeit an. Und ist es auch - sowohl kompliziert als auch viel Arbeit.
Auch hier stimme ich wieder zu. Ich hatte nur weiter oben dazu bereits eine Idee gepostet. Ich zitiere mich daher mal selbst, um es noch einmal vorzikramen...
meinereiner hat gesagt.:
Weiss nicht, ob es was bringt, aber du könntest den Content in einen JavaFX WebView packen (muss aber angezeigt werden, sonst wird das nichts) und hinterher per JavaScript die Höhe auslesen. Aber trivial ist das nicht und sicher auch nicht performant, denn der WebView muss nach jeder Zeile geupdated werden - und der allerschnellste ist er auch nicht...
Ich würde es einfach mal versuchen. Wie gesagt: Ob das eine gerader optimaler Ansatz ist, weiss ich nicht, aber es ist eine Idee.
Bezüglich der Performance fällt mir noch gerade ein, dass du vielleicht auch eine Dependency zu SWT (JAR des SWT-Interfaces selbst, sowie noch zu der Platform - z.B. swt-win32.jar oder so) nutzen könntest. Dort wird der System-Browser (oder Mozilla oder WebKit - wenn man es so konfiguriert) vom Browser-Widget gewrappt. Könnte also vielleicht performanter sein - aber noch frikeliger.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Javadoc HTML erzeugen mit allen dependency Java Basics - Anfänger-Themen 11
M html-seite drucken (gerendert) Java Basics - Anfänger-Themen 3
I HTML Code säubern Java Basics - Anfänger-Themen 4
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
B HTML Code in XML speichern Java Basics - Anfänger-Themen 3
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
B String nach HTML formatieren Java Basics - Anfänger-Themen 9
S HTML-Quelltext hinter HTTPS Java Basics - Anfänger-Themen 1
J Input/Output Input Buttons Html mit JSP Java Basics - Anfänger-Themen 3
E HTML in Java einbinden oder JavaScript? Java Basics - Anfänger-Themen 5
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
krgewb Input/Output Umlaute in generierter HTML-Datei Java Basics - Anfänger-Themen 7
N Status-Log - HTML Java Basics - Anfänger-Themen 12
C Methoden Welche JSoup Methoden Und Parameter für diese HTML Tags Java Basics - Anfänger-Themen 4
I Meta Tags vergleichen mit Html Vorgabe Java Basics - Anfänger-Themen 8
B HTML Code drucken Java Basics - Anfänger-Themen 4
D HTML Manipulation Navigation Java Basics - Anfänger-Themen 1
Z Html Element aus der Webseite auslesen Java Basics - Anfänger-Themen 1
D Erste Schritte HTML aus JEditorPane drucken Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
M Java und Html Java Basics - Anfänger-Themen 4
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
I Watermark erstellen mit HTML in Bild? Java Basics - Anfänger-Themen 7
T Ausgabe in HTML :( Java Basics - Anfänger-Themen 19
F HTML Datei in .jar speichern und abändern Java Basics - Anfänger-Themen 2
S mit Java HTML Button drücken "lassen" Java Basics - Anfänger-Themen 8
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
T HTML-Inputbox ansteuern Java Basics - Anfänger-Themen 4
I HTML in String wandeln? Java Basics - Anfänger-Themen 1
D javacode durch Html ausfuehren Java Basics - Anfänger-Themen 13
W HTML Code, Umlaute werden nicht richtig dargestellt Java Basics - Anfänger-Themen 7
C Html in einem JEditorPane anzeigen Java Basics - Anfänger-Themen 2
I jar-Datei in HTML einbinden Java Basics - Anfänger-Themen 6
O HTML -> BBCode Parser? Java Basics - Anfänger-Themen 3
O Methode in andere Klasse verlegt, "auslesen" einer HTML Seite verschnellert - Problem. Java Basics - Anfänger-Themen 4
V Umlaute beim Parsen einer HTML Seite Java Basics - Anfänger-Themen 4
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
J Methode um eine HTML-Datei zu öffnen Java Basics - Anfänger-Themen 10
H Schnell HTML-Tags finden Java Basics - Anfänger-Themen 5
H Welcher Html-Parser? Java Basics - Anfänger-Themen 8
G Probleme beim HTML auslesen Java Basics - Anfänger-Themen 6
J Html zugriff - POST Request/Response Java Basics - Anfänger-Themen 4
A HTML-Code auslesen und mit einem Wert in der property-Datei vergleichen Java Basics - Anfänger-Themen 2
Z Input/Output HTML-Seite einlesen Java Basics - Anfänger-Themen 4
H Interface JTextPane html formatiert kopieren Java Basics - Anfänger-Themen 2
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
D Wie den HTML-Teil des Chat Tutorials aus dem FAQ-Bereich starten? Java Basics - Anfänger-Themen 5
C Link wie bei HTML Java Basics - Anfänger-Themen 7
F Methoden replaceAll (regex) HTML Java Basics - Anfänger-Themen 3
M Mit Java eine HTML-Seite speichern Java Basics - Anfänger-Themen 11
C Java in HTML einbinden Java Basics - Anfänger-Themen 2
N Website HTML mit JavaScript abrufen Java Basics - Anfänger-Themen 9
R JSON - Ausgabe als HTML mit gson Java Basics - Anfänger-Themen 6
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
A JEditorPane + html -> java.io.IOException: invalid url Java Basics - Anfänger-Themen 4
S Lightbox Script vs. Taco HTML Script Java Basics - Anfänger-Themen 4
R Pattern bzw. Regex HTML-Code Java Basics - Anfänger-Themen 10
S String mit ASCII/HTML Zeichen darstellen Java Basics - Anfänger-Themen 10
S HTML Regularer Expression Java Basics - Anfänger-Themen 20
S regulärer Ausdruck HTML Java Basics - Anfänger-Themen 5
D Html Formular auswerten Java Basics - Anfänger-Themen 8
P Java Object das eine HTML Datei repräsentiert Java Basics - Anfänger-Themen 19
eLogic Einlesen von HTML-Source Java Basics - Anfänger-Themen 6
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
H html-Text mit Formatierung in String speichern Java Basics - Anfänger-Themen 4
S Java und HTML- Drop Down- Mehrfachauswahl Java Basics - Anfänger-Themen 3
A execute jar from html Java Basics - Anfänger-Themen 6
D Interpreter-Fehler JavaApplet läuft in der IDE aber nicht im HTML Dokument Java Basics - Anfänger-Themen 9
StupidAttack Html Code durchsuchen Java Basics - Anfänger-Themen 2
T Servlet HTML-Formular Java Basics - Anfänger-Themen 9
TheKing HTML Formular mit Java ausfüllen und absenden Java Basics - Anfänger-Themen 9
P HTML <input> Feld in einem JLabel auslesen Java Basics - Anfänger-Themen 4
C einfacher Link zu *.html Datei möglich? Java Basics - Anfänger-Themen 4
V javascript und HTML: hoch 2 Java Basics - Anfänger-Themen 2
M index.html fehlt Java Basics - Anfänger-Themen 12
3 Eine HTML Datei in eine Java Datei umschreiben Java Basics - Anfänger-Themen 23
Weltall 7 Applet in HTML einbinden Java Basics - Anfänger-Themen 3
A Java in Html einbinden Java Basics - Anfänger-Themen 2
M Frage zum Aufruf eines Applets aus einer HTML - Datei Java Basics - Anfänger-Themen 3
sylo Auf HTML-Dateien in einer Jar zugreifen Java Basics - Anfänger-Themen 9
D HTML Text von jButton disablen Java Basics - Anfänger-Themen 2
I CSV Datei auf HTML Seite hochladen und in DB laden Java Basics - Anfänger-Themen 9
K html to pdf Java Basics - Anfänger-Themen 6
D String aus Html (sonderfall) Java Basics - Anfänger-Themen 9
F html editor Java Basics - Anfänger-Themen 5
A html parser Java Basics - Anfänger-Themen 5
G HTML Seite generieren Java Basics - Anfänger-Themen 2
S Text aus HTML Datei in TXT Datei Java Basics - Anfänger-Themen 19
U HTML-String zusammenbauen Java Basics - Anfänger-Themen 4
P Datentypen HTML Dokument speichern (Netbeans) Java Basics - Anfänger-Themen 10
S kreative Schlaue funktion für optionsfeld (html) gesucht... Java Basics - Anfänger-Themen 4
P Applet: URL an html übergeben Java Basics - Anfänger-Themen 3
Benji0815 HTML <div> Tags entfernen Java Basics - Anfänger-Themen 6
M JApplet in HTML einbetten > mehrere .class-Dateien Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben