html in jTextPane klappt teilweise und teilweise nicht

Status
Nicht offen für weitere Antworten.

SBehnen27

Aktives Mitglied
so. hab schon haufenweise threads durchsucht nach ergebnissen, die mich weiter bringen.
leider ohne erfolg.

ich habe für einen mini-chat ein jtextpane in einem scrollpane. Hier mal die "besonderen Sachen":

Code:
eingang.setContentType("text/html"); 
eingang.setText("<html><body><font color='#CC0033'>"+Selber.getName()+" ist voll dabei!</font>");

der text, der dort gesetzt wird erscheint auch rot in der ersten zeile. So weit so gut.

wenn ich nun meinen senden button drücke wird folgendes ausgeführt:

Code:
public void senden(String nachricht){
        try{
            //ObjectOut.writeObject("<html><font color='#CC0033'>"+Selber.getName()+"</font>"+": "+nachricht+"</html>");
            ObjectOut.writeObject("<font color='#CC0033'>"+Selber.getName()+"</font>"+": "+nachricht);
            ObjectOut.flush();
            //ObjectOut.reset();
            //eingang.setText(eingang.getText()+"\n"+"<html><font color='#1cab0d'>"+Selber.getName()+"</font>"+": "+nachricht+"</html>");
            eingang.setText(eingang.getText()+"
<font color='#1cab0d'>"+Selber.getName()+"</font>"+": "+nachricht);
            ausgang.setText("");
        }
        catch(Exception e){}
    }

das eigenartige ist nun, dass davon nichts zu sehen ist... es kommen nichtmal leere zeilen dazu ...
hab auch mal gedacht, das liegt dran, weil ich HTML nicht schliesse. habs dann ausprobiert, hat aber auch nichts gebracht...
Jemand ne Idee, woran das liegen könnte?

dazu ist noch zu sagen, wenn ich den ContentType auf text/plain setze wird alles angezeigt (aber dann halt mit den <TAGs>...
 
R

Roar

Gast
1. uf, html. verwende doch lieber attribuetsets, mit denen kannst du 1. bestimmt speicher sparen & 2. ist die möglichkeit gegeben einfach den style zu ändern
2. uf, objectoutputstreams für netzwerk? is das nich bisschen zu langsam? und
3. warum schickst du die formatierung mit? ist doch nur ballast

so nachdem das geklärt wär :D :
schonmal dir den stack6trace der exception ausgeben lassen? sone exception einfach unbehandelt lassen is böse ;)

btw 4.: insertString() ist bestimmt nochmal n paar ms schneller als setText(getText()) :D

edit: uff, hättste das nich vorher sagen können? ;) naja gib trotzdem mal die xception aus, falls eine fliegen sollte...
 

SBehnen27

Aktives Mitglied
getestet und: keine exception.

wird einfach nicht angezeigt... wie funzt das denn mit den attribut sets? vll. probier ich das ja mal aus.

zu den anderen geschichten: dieser "chat" is nur nen popeliges teil, das als zusatz bei einem Spiel dabei is.
da kommts nicht drauf an ob das schnell is oder nich... nur farbig solls sein ;)
 

SBehnen27

Aktives Mitglied
ich beziehe mich auf folgendes beispiel:
Code:
        JTextPane pane = new JTextPane(); 
        pane.setContentType("text/html"); 
        pane.setText( 
                "<font color = blue>Hallo</font> <a href>dies ist ein Test</a><font color=yellow>Dieses 
Element sollte seine Farbe durch HTML bekommen haben</font>"); 
        add(pane); 
        SimpleAttributeSet attributeSet = new SimpleAttributeSet(); 
        SimpleAttributeSet attributeSet2 = new SimpleAttributeSet(); 
        SimpleAttributeSet attributeSet3 = new SimpleAttributeSet();        
        StyleConstants.setForeground(attributeSet, Color.RED); 
        StyleConstants.setForeground(attributeSet2, Color.GREEN); 
        StyleConstants.setForeground(attributeSet3, Color.CYAN); 
        StyleConstants.setBold(attributeSet, true); 
        StyleConstants.setItalic(attributeSet, true); 
        StyleConstants.setFontSize(attributeSet, 20); 
        StyledDocument doc = pane.getStyledDocument(); 
        doc.setCharacterAttributes(0, 5, attributeSet, false); 
        doc.setCharacterAttributes(7, doc.getLength()-7, attributeSet2, false); 
        doc.setCharacterAttributes(5, 2, attributeSet3

wenn ich das richtig sehe, dann is das ne recht statische geschichte... ich hab damit zwar noch nie was gemacht, aber es sieht mir doch recht ungeeignet aus für das, was ich vor habe... da scheint mir html doch wesentlich einfacher zu sein.

und die erste zeile wird ja auch dargestellt. nur halt die weiteren angefügrten nicht...
 

Sky

Top Contributor
Machs halt so:
Code:
public class Test extends JFrame {

  SimpleAttributeSet as = new SimpleAttributeSet();

  public Test() {
    JTextPane pane = new JTextPane();
    pane.setEnabled(false);

    pane.setContentType( "text/html" );
    getContentPane().add( pane );

    addMessage( pane, "Rot/Gelb-Fett-20", Color.RED, Color.YELLOW, true, false, 20 );
    addMessage( pane, "Blau/Gruen-16", Color.BLUE, Color.GREEN, false, false, 16 );
    addMessage( pane, "\n neue Zeile\n", Color.BLACK, Color.WHITE, false, true, 16 );
    addMessage( pane, " Noch ne Nachricht\n", Color.DARK_GRAY, Color.ORANGE, false, false, 12 );
    addMessage( pane, " letzter Test", Color.BLUE, Color.WHITE, true, false, 10 );
  }

  private boolean addMessage( JTextPane pane, String text, Color fg, Color bg, boolean bold, boolean italic, int fontsize ) {
    StyleConstants.setForeground( as, fg );
    StyleConstants.setBackground( as, bg );
    StyleConstants.setBold( as, bold );
    StyleConstants.setItalic( as, italic );
    StyleConstants.setFontSize( as, fontsize );
    StyledDocument doc = pane.getStyledDocument();
    try {
      doc.insertString( doc.getLength(), text, as );
    } catch( BadLocationException ex ) {
      return false;
    }
    return true;
  }

  public static void main( String[] args ) throws Exception {
    Test x = new Test();
    x.pack();
    x.setVisible( true );
    x.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }
}
 

sisko78

Bekanntes Mitglied
oder z.b. mit Styles:
Code:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;


class JTextPane2
    extends JTextPane {
  boolean wrap = true;
  StyledDocument doc;


  public JTextPane2() {
    doc = this.getStyledDocument();
    this.addStylesToDocument(doc);
  }

  public JTextPane2(boolean wrap) {
    this.wrap = wrap;
  }

  public JTextPane2(StyledDocument doc) {
    super(doc);
  }

  public boolean getScrollableTracksViewportWidth() {
    if (wrap) {
      return super.getScrollableTracksViewportWidth();
    }
    else {
      return false;
    }
  }

  public void setSize(Dimension d) {
    if (!wrap) {
      if (d.width < getParent().getSize().width) {
        d.width = getParent().getSize().width;
      }
    }
    super.setSize(d);
  }

  //Sets the line-wrapping policy of the JTextPane2
  //By default this property is true
  void setLineWrap(boolean wrap) {
    setVisible(false);
    this.wrap = wrap;
    setVisible(true);
  }

  /**
   * Add some styles to the document:
   * regular,italic,blue,bold,small,large
   *
   * @param doc StyledDocument
   */
  protected void addStylesToDocument(StyledDocument doc) {
    //Initialize some styles.
    Style def = StyleContext.getDefaultStyleContext().
        getStyle(StyleContext.DEFAULT_STYLE);

    Style regular = doc.addStyle("regular", def);
    StyleConstants.setFontFamily(def, "SansSerif");

    Style s = doc.addStyle("italic", regular);
    StyleConstants.setItalic(s, true);

    s = doc.addStyle("blue", regular);
    StyleConstants.setForeground(s, Color.BLUE);

    s = doc.addStyle("bold", regular);
    StyleConstants.setBold(s, true);

    s = doc.addStyle("small", regular);
    StyleConstants.setFontSize(s, 10);

    s = doc.addStyle("large", regular);
    StyleConstants.setFontSize(s, 16);
  }

  /**
   * Append text to TextPane with a specific Style. Possible styles:
   * regular, italic, blue, bold, small, large
   *
   * @param text String
   * @param style String
   */
  protected void appendText(String text, String style) {
    try {
      doc.insertString(doc.getLength(), text, doc.getStyle(style));
    }
    catch (BadLocationException ex) {
      System.out.println(
          "A BadLocationException occured when appending a String to the JTextPane");
    }
  }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
R Swing Renderproblem bei HTML in einer JTextPane AWT, Swing, JavaFX & SWT 12
N Swing JTextPane zur Anzeige von HTML AWT, Swing, JavaFX & SWT 2
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
B JTextPane und Image importieren in HTML String. AWT, Swing, JavaFX & SWT 2
J Html in JTextPane anzeigen? AWT, Swing, JavaFX & SWT 2
P HTMLDocument in einem JTextPane. Anhängen von HTML-Code AWT, Swing, JavaFX & SWT 2
B Feste Breite einer JTextPane, die HTML anzeigt AWT, Swing, JavaFX & SWT 8
G Zeilenabstand bei HTML-Texten in JLabel/JTextPane AWT, Swing, JavaFX & SWT 7
C HTML in JTextPane anzeigen AWT, Swing, JavaFX & SWT 2
M Mit JTextPane erstelltes Dokument als HTML-Code ausgeben AWT, Swing, JavaFX & SWT 4
Z JTextPane (text/html): Schrift festlegen AWT, Swing, JavaFX & SWT 5
izoards HTML Editor AWT, Swing, JavaFX & SWT 3
H setToolTipText ignoriert HTML-Formatierung des anzuzeigenden Strings AWT, Swing, JavaFX & SWT 4
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
kodela HTML-tags für JLabel AWT, Swing, JavaFX & SWT 9
C HTML Editor Eingabemaske kafenio Ersatz AWT, Swing, JavaFX & SWT 7
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
K Html Editor AWT, Swing, JavaFX & SWT 3
B Swing HTML in JLabels AWT, Swing, JavaFX & SWT 6
S jLabel HTML Formatierung AWT, Swing, JavaFX & SWT 2
B JavaFX Java FX Html Template AWT, Swing, JavaFX & SWT 0
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
R Swing JTable : Header der Spalten ergänzen mit caption (wie bei html-table) AWT, Swing, JavaFX & SWT 2
I LookAndFeel HTML Auflösung - Online Editor programmieren AWT, Swing, JavaFX & SWT 2
T HTML mit Java AWT, Swing, JavaFX & SWT 1
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
N JLabel HTML mit custom Font AWT, Swing, JavaFX & SWT 0
H RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an AWT, Swing, JavaFX & SWT 1
F Submit eines HTML-Formulars in Vaadin AWT, Swing, JavaFX & SWT 3
T Swing HTML Text aus JLabel ohne "HTML-Tags" in String einlesen AWT, Swing, JavaFX & SWT 5
J JApplet, HTML und access denied exitVM.0 AWT, Swing, JavaFX & SWT 3
L Swing JToogleButton Vordergrundfarbe bei HTML String AWT, Swing, JavaFX & SWT 4
H Swing JApplet - HTML - ClassNotFoundException AWT, Swing, JavaFX & SWT 7
G Swing HTML Version AWT, Swing, JavaFX & SWT 11
S HTML in Java einbinden AWT, Swing, JavaFX & SWT 4
B JEditorPane lädt keine Schriftfarbe in HTML AWT, Swing, JavaFX & SWT 2
J JEditorPane mit HTML füllen AWT, Swing, JavaFX & SWT 2
N Swing JTree TreeCellRenderer mit html und automatischen Zeilenumbruch AWT, Swing, JavaFX & SWT 8
N Swing KomponentenHöhe an html-Inhalt anpassen AWT, Swing, JavaFX & SWT 4
F Applet JApplet per html einbinden - Main class kann nicht gefunden werden AWT, Swing, JavaFX & SWT 15
C html browser in Application nutzen AWT, Swing, JavaFX & SWT 10
S SWT Anzeigen einer lokalen HTML-Seite im Browser Widget über RAP nicht möglich AWT, Swing, JavaFX & SWT 3
S HTML Syntaxhighlighting AWT, Swing, JavaFX & SWT 7
S SWT HTML-WYSIWUG-Editor AWT, Swing, JavaFX & SWT 3
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
H Swing JEditorPane und HTML AWT, Swing, JavaFX & SWT 3
D System.out.println() gibt html-Tags mit aus AWT, Swing, JavaFX & SWT 2
P Swing HTML-Renderer AWT, Swing, JavaFX & SWT 15
G Swing JCheckBox, setEnabled(false) und HTML Text Problem AWT, Swing, JavaFX & SWT 5
J 2D-Grafik Html in drawString() AWT, Swing, JavaFX & SWT 2
L Applet In HTML einbinden klappt einfach nicht AWT, Swing, JavaFX & SWT 5
X Frei nutzbarer HTML Editor AWT, Swing, JavaFX & SWT 13
B WYSIWYG-HTML-Editor / Validator für JAVA AWT, Swing, JavaFX & SWT 2
N JCombobox wie in HTML AWT, Swing, JavaFX & SWT 6
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
G Swing JEdtitorPane und HTML Image Seite AWT, Swing, JavaFX & SWT 2
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
destroflyer Wort im JLabel verlinken (per HTML) AWT, Swing, JavaFX & SWT 3
R Swing JTextComponent und HTML AWT, Swing, JavaFX & SWT 7
D Nodes eines statischen JTrees sollen auf Anker (Textmarken) in einer HTML-Datei zeigen AWT, Swing, JavaFX & SWT 8
S Swing HTML-Text in JEditorPane einfärben AWT, Swing, JavaFX & SWT 5
D Darstellung in Swing wie HTML? AWT, Swing, JavaFX & SWT 2
H Mit JLabel HTML - formatierten Text anzeigen AWT, Swing, JavaFX & SWT 14
M Swing Kein update bei simulierten HTML-Link AWT, Swing, JavaFX & SWT 4
B Grafiken in JLabel mittels html AWT, Swing, JavaFX & SWT 5
B JEditorPane - Text und Graphik in HTML speichern AWT, Swing, JavaFX & SWT 4
K Alternative zu Applet mit HTML-Einbindung AWT, Swing, JavaFX & SWT 11
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Text -> HTML: Caret-Koordinaten verschoben AWT, Swing, JavaFX & SWT 6
S JEditorPane soll HTML und dann Text anzeigen..? AWT, Swing, JavaFX & SWT 5
T HTML und JEditorPane AWT, Swing, JavaFX & SWT 6
J JList & HTML AWT, Swing, JavaFX & SWT 2
T HTML Seite neu laden mittels Applet AWT, Swing, JavaFX & SWT 2
N Performanceprobleme mit JLabel und HTML content AWT, Swing, JavaFX & SWT 5
A Oberfläche wir mit html-Frames aufbauen AWT, Swing, JavaFX & SWT 11
W HTML-Text mit relativer URL in JEditorPane einlesen AWT, Swing, JavaFX & SWT 10
C Suche fertigen HTML editor AWT, Swing, JavaFX & SWT 2
B HTML in Swing Components (JLabel) AWT, Swing, JavaFX & SWT 7
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
G Hilfe beim Erstellen eines eigenen Html-Editors! AWT, Swing, JavaFX & SWT 4
S drawString für HTML-Text? AWT, Swing, JavaFX & SWT 7
G Frage zu Labels mit html AWT, Swing, JavaFX & SWT 3
P HTML darstellen mit Java AWT, Swing, JavaFX & SWT 4
ARadauer swing html wysiwyg componente AWT, Swing, JavaFX & SWT 6
V "Anker" wie in HTML für JScrollPane? AWT, Swing, JavaFX & SWT 2
M html im Titel von JFrame AWT, Swing, JavaFX & SWT 9
M html aus einem Stream Laden und Anzeigen AWT, Swing, JavaFX & SWT 4
T Öffnen von SWT-Dialogboxen durch HTML-Link in HTML-Code AWT, Swing, JavaFX & SWT 4
V Swing to HTML? AWT, Swing, JavaFX & SWT 4
A HTML-Datei öffnen AWT, Swing, JavaFX & SWT 3
A Noch mal Zusammenarbeit Java und HTML AWT, Swing, JavaFX & SWT 4
A Java und HTML AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben