Class Document seltsam leere Zeile am Anfang

Status
Nicht offen für weitere Antworten.

vegeta

Aktives Mitglied
Hallo,

ich hab ein paar zeilen in ein JTextpane mit hilfe der insertString methode geschrieben.

und in ein JScrollPane gepackt.

Alles wird schön angezeigt nur die Anzeige beginnt ab der zweiten zeile und am ende wird noch eine Zeile

eingefügt.

Ich will aber keine leere Zeile am Anfang, mit der Zeile am Ende könnte ich leben ;)

Hat jmd. rat?
 

vegeta

Aktives Mitglied
Hi,

das ist der konstruktor

Code:
 editor = new JTextPane();
       editor.addHyperlinkListener(this);
       editor.setEditable(false);
       
       editor.setContentType("text/html charset=EUC-JP");	
       editor.setEditorKit(new HTMLEditorKit()); 
       
       scroller=new JScrollPane(editor);
       
       
       //getContentPane().setLayout(new FlowLayout());
       
       getContentPane().add(scroller);
       fill2();

hier die fill2 Methode die für den Inhalt sorgt

Code:
       Document styledoc=editor.getDocument();  
        SimpleAttributeSet hrefAttr;
        SimpleAttributeSet attrs ;
       
        for (int i=0;i<20;i++)
        {
            hrefAttr = new SimpleAttributeSet();
            hrefAttr.addAttribute(HTML.Attribute.HREF, (new Integer(i)).toString());
            hrefAttr.addAttribute(HTML.Attribute.ID,(new Integer(i)).toString());
            attrs = new SimpleAttributeSet();
            attrs.addAttribute(HTML.Tag.A, hrefAttr);
            attrs.addAttribute(AttributeSet.NameAttribute, HTML.Tag.CONTENT);
            StyleConstants.setFontSize(attrs,12);
            StyleConstants.setForeground(attrs,Color.black);
            
            try {
                styledoc.insertString(styledoc.getLength(), "web" , attrs);
br);
            } catch (BadLocationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

Danke für die hilfe
 

vegeta

Aktives Mitglied
ich poste mal den kompletten code
vielleicht hilft das.
wie ich ein
einfüge ist etwas tricky vielleicht habt ihr noch eine andere möglichkeit aber wenn ihr das Problem mit den Zeilen löst wär ich echt weiter

Code:
//Datei: JEditorPaneEx.java
import java.awt.*;
import java.awt.Color;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputMethodEvent;
import java.awt.event.InputMethodListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.lang.reflect.InvocationTargetException;

import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;



public class JEditorPaneEx2 extends JFrame implements HyperlinkListener
{
   // EditorPane erzeugen
   JTextPane editor;
   JScrollPane scroller;
   Point oldPoint;
   StringBuffer s;
   
  
       public void fill2()
    {
        
        Document styledoc=editor.getStyledDocument();  
        SimpleAttributeSet hrefAttr;
        SimpleAttributeSet attrs ;
        SimpleAttributeSet br=new SimpleAttributeSet();
        br.addAttribute(StyleConstants.NameAttribute, HTML.Tag.BR);
        StyleConstants.setForeground(br,Color.white);
        StyleConstants.setFontSize(br,12);
        for (int i=0;i<20;i++)
        {
            hrefAttr = new SimpleAttributeSet();
            hrefAttr.addAttribute(HTML.Attribute.HREF, (new Integer(i)).toString());
            hrefAttr.addAttribute(HTML.Attribute.ID,(new Integer(i)).toString());
            attrs = new SimpleAttributeSet();
            attrs.addAttribute(HTML.Tag.A, hrefAttr);
            attrs.addAttribute(AttributeSet.NameAttribute, HTML.Tag.CONTENT);
            StyleConstants.setFontSize(attrs,12);
            StyleConstants.setForeground(attrs,Color.black);
            
            try {
                styledoc.insertString(styledoc.getLength(), "web" , attrs);
                styledoc.insertString(styledoc.getLength(), "
" , br);
            } catch (BadLocationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        //editor.setDocument(doci);
        
    }
   		
   	 
  
   public JEditorPaneEx2()
   {
       super ("JEditorPane-Beispiel");
       
       editor = new JTextPane();
       editor.addHyperlinkListener(this);
       editor.setEditable(false);
       editor.setContentType("text/html charset=EUC-JP");	
       editor.setEditorKit(new HTMLEditorKit());
       
       
       scroller=new JScrollPane(editor);
       
       
       //getContentPane().setLayout(new FlowLayout());
       
       getContentPane().add(scroller);
       fill2();
       setSize (300, 200);
   }

   public static void main (String[] args) 
   {
      JEditorPaneEx2 editorEx = new JEditorPaneEx2();
      editorEx.show();
   }


public void hyperlinkUpdate(HyperlinkEvent event) {
    // TODO Auto-generated method stub
    
    
  }


}
 

semi

Top Contributor
Füge die folgende Methode in die oben genannte Klasse ein
Code:
private void showElementTree() {
  final JFrame elementTreeFrame = new JFrame("ElementTree");
  elementTreeFrame.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
      elementTreeFrame.setVisible(false);
    }
  });
  elementTreeFrame.getContentPane().setLayout(new BorderLayout());
  elementTreeFrame.getContentPane().add(new ElementTreePanel(editor));
  elementTreeFrame.pack();
  elementTreeFrame.setVisible(true);
}
und rufe sie am Ende des Konstruktors mit showElementTree() ; auf
Die Klasse ElementTreePanel findest Du im Demo-Verzeichnis von
JDK (jdk1.x.x/demo/jfc/Stylepad/src)
Kopiere sie in das Verzeichnis Deines Projekts und starte das ganze.
(evtl fehlen paar Imports ergänzen)

Wenn Du Dir die Struktur des Dokuments anschaust, wirst Du sehen, dass
Dein komplettes HTML in einem Paragraph-Element (

</p>) steckt.
HTMLEditorKit macht immer einen Zeilenumbruch vor einem neuen Paragraph,
daher Zeilenumbruch oben.
Den unteren Zeilenumbruch fügst Du selbst in der Schleife ein
Code:
try { 
  styledoc.insertString(styledoc.getLength(), "web" , attrs); 
  if(i<19) // das hier einfügen, dann ist es weg
    styledoc.insertString(styledoc.getLength(), "
" , br); 
} catch (BadLocationException e) { 
  //TODO Auto-generated catch block 
  e.printStackTrace(); 
}

Schau Dir am besten das Beispiel von Swing an (jdk1.x.x/demo/jfc/Stylepad/src)

Gruß,
Michael
 

vegeta

Aktives Mitglied
oje oje die letzte leere Zeile geht auf meine Mütze, warum hab ich das nicht gesehen.

was macht die ElementTreePanel klasse genau?

ich hab eine möglichkeit gefunden das mit der ersten Zeile zu verhindern aber ich weis nicht so genau warum das geklappt hat.
Code:
       HTMLEditorKit kit= new HTMLEditorKit();
       StyleSheet style=new StyleSheet();
       style.addRule("Body { font-size: 10pt; }");
       kit.setStyleSheet(style);
       editor.setEditorKit(kit);

Weist du wie man das automatische parsen auf umlaute und sonderzeichen abstellt? Wenn man strings mit insertstring in das document reinlegt werden umlaute und sonderzeichen in html zeichen sprich & für & umgewandelt.
das ist eine schöne sache aber ich will das nicht
 

semi

Top Contributor
Die ElementTreePanel-Klasse zeigt die Struktur des Dokuments in einem JTree an. Probiere es einfach aus.
Das mit den Umlauten weiß ich nicht. Es passiert wahrscheinlich im HTMLWriter. Vermutlich müsstest Du den
halben HTMLEditorKit umschreiben, um das zu verhindern. Schreib Dir eine Methode, die solche Maskierung
wieder entfernt.
 

vegeta

Aktives Mitglied
hallo, also diese möglichkeit ist mir auch in den sinn gekommen, aber das führt zu performance verlusst. ich versuch die stelle zu finden wo die umwandlung passiert und überschreibe dann die methode

das ganze passiert zwischen

styledoc.insertString(styledoc.getLength(), "web" , attrs);

und

HTMLEditorKit.write(...) in dieser Methode wird auch HTMLWrite

aufgerufen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
H .class in .java umwandeln Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
J Class.forName und CLASSPATH -Problem Allgemeine Java-Themen 5
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
G Thread in Methode oder in inner class Allgemeine Java-Themen 3
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
reibi Main-Class in Jarfile Allgemeine Java-Themen 3
E Timer class macht einfach garnichts :/ Allgemeine Java-Themen 6
D Class.forName Allgemeine Java-Themen 2
S Class RGB Farbe Allgemeine Java-Themen 2
S JavaDoc aus .class Datei extrahieren Allgemeine Java-Themen 5
mongole Class.class.getResource(...) Allgemeine Java-Themen 10
N Probleme mit .jar 'Could not find main class' Allgemeine Java-Themen 3
T Class Not Found Exception beim import von Paket Allgemeine Java-Themen 2
G Abstract class Stillfrage Allgemeine Java-Themen 4
P Class Casting: Graphics/Graphics2D Allgemeine Java-Themen 7
H2SO3- abstract class mit Beispielen in abstracten Methoden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben