Swing JEditorPane in Kombination mit JScrollPane

pixelGaming

Mitglied
Hallo,

ich habe das Problem, dass wenn ich ein großen Text in mein JEditorPane über setText() lade, fügt er zwar den ganzen Text hinzu, ich kann aber nicht Scrollen. Das JEditorPane sollte nicht editierbar sein sprich .setEditable(false); , da ich Links mit verarbeite.

Testweiste habe ich es auf true gesetzt und wenn ich nur eine kleine Änderung vornehme, zeigt er mir die Scrollbar wie gewünscht an. Ich habe schon ausprobiert, das JPanel, die ganze GUI und das JEditorPane einzeln zu refreshen etc... Das hat leider nicht geklappt.

Im Internet finde ich auch nichts gescheites, dass mir weiterhilft.

Hat dazu jemand eine Idee, die ich noch ausprobieren kann ?
 

truesoul

Top Contributor
Hallo.

Java:
JEditorPane pane= new JEditorPane();
JScrollPane scrollPane = new JScrollPane(pane);
add(scrollPane);
textArea.setText(
        "Lorem ipsum dolor sit amet, \n consetetur sadipscing \n elitr, sed diam nonumy eirmod tempor invidunt \n  ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et \n justo duo dolores et ea rebum. \n Stet clita kasd gubergren, \n no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.");
pane.setEditable(false);

Grüße
 

pixelGaming

Mitglied
Tut mir leid, ich hatte das Wochenende keine Zeit, um mich mit diesem Problem auseinander zu setzen.

@truesoul: Ja diese Lösung habe ich ja auch schon andersweitig im Netz gefunden und implementiert. Das löst allerdings nicht mein Problem. Ich nutze auch HTML-Tags, da ich ein Link einfügen muss wie oben schon einmal erwähnt.

Java:
// SouthPanel
        searchDisplayTextPane = new KnowledgeBaseEditorPane();
        searchDisplayTextPane.setMinimumSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
        searchDisplayTextPane.setMaximumSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
        searchDisplayTextPane.setPreferredSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
        searchDisplayTextPane.addHyperlinkListener(new KnowledgeBaseHyperlinkListener());
        searchDisplayScrollPane = new JScrollPane(searchDisplayTextPane, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        searchDisplayTextPane.setEditable(false);

Der Text wird dann an dieser Stelle hinzugefügt.

Java:
@Override
   public void actionPerformed(ActionEvent e) {
       gui = GUI.getGui();
       problemTxt = gui.getTextSearchProblemTexField();
       if(problemTxt.equals(" ") || problemTxt.equalsIgnoreCase(KeyWords.ENTER_PROBLEM)){
           try {
               gui.setSearchDisplayTextPane(ExcelInterface.search(
                       gui.getSearchCategoryComboBoxSelectedName(),
                       gui.getSearchSubcategoryComboBoxSelectedName()));
               
               
               
//               gui.getSearchDisplayScrollPane().revalidate();
//               gui.getSearchDisplayScrollPane().repaint();
           }catch(IOException e1) {
               e1.printStackTrace();
           }
       }else {
           try {
               gui.setSearchDisplayTextPane(ExcelInterface.search(
                       gui.getSearchCategoryComboBoxSelectedName(),
                       gui.getSearchSubcategoryComboBoxSelectedName(),
                       problemTxt));
               
               
               
//               gui.getSearchDisplayScrollPane().revalidate();
//               gui.getSearchDisplayScrollPane().repaint();
           }catch(IOException e1) {
               e1.printStackTrace();
           }
       }
 

thet1983

Top Contributor
um html code anzeigen zu können musst du den Contentype setzten.
Java:
JEditorPane editorPane = new JEditorPane();
JScrollPane scrollpane = new JScrollPane(editorPane);
editorPane.setContentType("text/html"); // CONTENTTYPE SETZEN
editorPane.setEditable(false);

>> edit: bild und datei mit html tags hinzu
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    43,2 KB · Aufrufe: 37
  • data.txt
    608 Bytes · Aufrufe: 3
Zuletzt bearbeitet:

pixelGaming

Mitglied
Das löst leider nicht mein Problem, dass wenn ich den Text in das JEditorPane lade, dass ich keine ScrollBalken habe. Trotzdem danke für den Hinweis!
 

pixelGaming

Mitglied
Java:
public class KnowledgeBaseEditorPane extends JEditorPane{

    public KnowledgeBaseEditorPane() {
    }
  
    public void addText(String txt) {

    }

    public void setFormatText(Map<String, HTMLFormat> map) {
        setText(HTMLFormatMethods.convertToString(map));
    }

Ich hab diese Klasse mir erstellt, weil ich anfangs mit diesen Document's gearbetiet habe, das ging dann aber nicht. Die Klasse hab ich trotzdem weiter behalten.
 

pixelGaming

Mitglied
Also ich denk der Bug, den ich noch drin habe kommt durch diese ganze Sache. Wenn ich auf ein andere Panel klicke verschwindet das das JEditorPane vergrößert sich auf die ganze Fläche des Frames und die Scrollbar erscheint. Klick ich nochmal auf die gleiche Stelle erscheint das andere Panel wieder. Die Scrollbar bleibt. Sozusagen wäre es dann richtig dargestellt. Nur das kann man nicht so lassen :D. Das sollte schon direkt in richtiger Form dargestellt werden.
 

pixelGaming

Mitglied
Java:
    private void initialSearchPanel(JPanel panel) {
        panel.setLayout(new BorderLayout());
       
        // CenterPanel
        JPanel center = new JPanel();
        center.setLayout(new GridLayout(3, 3));

        // Problem Label & TextField
        JLabel problemLabel = new JLabel("Problem:");
        center.add(problemLabel);
        searchProblemTextField = new JTextField("Please enter a problem ...", 20);
        searchProblemTextField.addFocusListener(new SearchFocusListener());
        center.add(searchProblemTextField);

        // Category Label & ComboBox
        JLabel categoryLabel = new JLabel("Category:");
        center.add(categoryLabel);
        searchCategoryVector = fillVector("Category", 0); // Insert all Categories which registered in the Excel-Sheet
        searchCategoryComboBox = new JComboBox<String>(searchCategoryVector);
        searchCategoryComboBox.addItemListener(new SeachComboBoxItemListener());
        center.add(searchCategoryComboBox);

        // Subcategory Label & ComboBox
        JLabel subcategoryLabel = new JLabel("Subcategory:");
        center.add(subcategoryLabel);
        searchSubcategoryVector = fillVector("Subcategory", 1);
        searchSubcategoryComboBox = new JComboBox<String>(searchSubcategoryVector);
        center.add(searchSubcategoryComboBox);

        // EastPanel
        JButton searchButton = new JButton("Search");
        searchButton.addActionListener(new SearchActionListener());

        // SouthPanel
//        searchDisplayTextPane = new JEditorPane();
        searchDisplayTextPane = new KnowledgeBaseEditorPane();
        searchDisplayTextPane.setMinimumSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
        searchDisplayTextPane.setMaximumSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
        searchDisplayTextPane.setPreferredSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
        searchDisplayTextPane.addHyperlinkListener(new KnowledgeBaseHyperlinkListener());
        searchDisplayTextPane.setContentType("text/html");
        searchDisplayScrollPane = new JScrollPane(searchDisplayTextPane);
        searchDisplayTextPane.setEditable(false);
        // --------------
        panel.add(center, BorderLayout.CENTER);
        panel.add(searchButton, BorderLayout.EAST);
        panel.add(searchDisplayTextPane, BorderLayout.SOUTH);
    }
 

thet1983

Top Contributor
wann setzt du das JFrame auf
Code:
setVisible(true);
?

wenn du das setVisible VOR dem adden der Compontens setzt dann kann so ein Verhalten auftreten...
also das setVisible IMMER zum Schluss setzten...
sonst würde mit auch nichts mehr einfallen...
 

pixelGaming

Mitglied
Java:
public static void main(String[] args) {
        GUI frame = new GUI();
        frame.setTitle("KnowledgeBase");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setResizable(false);
        frame.setVisible(true);
    }

Na das setzt ich ganz zum Schluss auf true :p
So ein bisschen kann ich ja doch schon Java-Programmieren. Ich find halt euch den Fehler nicht leider.
Ich bedanke mich trotzdem für deinen Einsatz =)
 

pixelGaming

Mitglied
Ich sagte ein bisschen =D So hab ich es mal gesehen und selber so angeeignet. Du hast aber natürlich Recht. ^^
Hat mich noch nie jemand darauf hingewiesen. Danke ^^
 

pixelGaming

Mitglied
Also in dieser Klasse füge ich dem EditorPane noch ein StyleSheet hinzu.

Java:
private void addStyleSheet() {
        kit = new HTMLEditorKit();
        kit.setStyleSheet(new KnowledgeBaseStyleSheet());
       
        searchDisplayTextPane.setEditorKit(kit);
        insertDisplayTextPane.setEditorKit(kit);
    }

Java:
public class KnowledgeBaseStyleSheet extends StyleSheet {

    public KnowledgeBaseStyleSheet() {
        super();
        addRule("h1 {    font-size: 14 px; "
                + "        text-decoration: underline;"
                + "}");
    }
   
}
 

truesoul

Top Contributor
Also in dieser Klasse füge ich dem EditorPane noch ein StyleSheet hinzu.

Java:
private void addStyleSheet() {
        kit = new HTMLEditorKit();
        kit.setStyleSheet(new KnowledgeBaseStyleSheet());
      
        searchDisplayTextPane.setEditorKit(kit);
        insertDisplayTextPane.setEditorKit(kit);
    }

Java:
public class KnowledgeBaseStyleSheet extends StyleSheet {

    public KnowledgeBaseStyleSheet() {
        super();
        addRule("h1 {    font-size: 14 px; "
                + "        text-decoration: underline;"
                + "}");
    }
  
}

Schon mal ohne versucht?
 

truesoul

Top Contributor
Setze doch mal bitte

panel.setPreferredSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));
searchDisplayScrollPane.setPreferredSize(new Dimension(GUIConfig.TEXTPANELWIDTH, GUIConfig.TEXTPANELHEIGHT));

Wenn das nicht funktioniert, weiß ich auch nicht weiter.
 

pixelGaming

Mitglied
Ich hab das Problem gelöst. Mein Problem war, dass ich versucht habe dem LayoutManager die Aufgabe abgenommen habe, die größe zu regulieren. Ich hatte dem JEditorPane die größe gegeben. Richtig ist es der JScrollPane die größe zu geben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
E wie Schriftfarbe in JEditorPane verändern? AWT, Swing, JavaFX & SWT 10
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
N JEditorPane und automatische Scrollposition AWT, Swing, JavaFX & SWT 2
K JEditorPane Text einfügen 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
C JEditorPane und Gifs AWT, Swing, JavaFX & SWT 2
B Swing JEditorPane ohne Zeilenumbruch nach InputStream 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
S JEditorPane Zeilen zählen AWT, Swing, JavaFX & SWT 5
C Swing JEditorPane: Caret nach Rechtsklick neu setzen AWT, Swing, JavaFX & SWT 4
X JEditorPane Größe in JDialog automatisch anpassen AWT, Swing, JavaFX & SWT 2
C JTextPane / JEditorPane ohne Keywords farbig machen AWT, Swing, JavaFX & SWT 4
S JEditorPane oder JTextPane? AWT, Swing, JavaFX & SWT 2
M Swing JEditorPane: Text formatieren AWT, Swing, JavaFX & SWT 2
F Swing JEditorPane Bild mittig einbinden AWT, Swing, JavaFX & SWT 5
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4
B 2D-Grafik Zeilen drehen im JEditorPane AWT, Swing, JavaFX & SWT 3
H Plain Text in RTF JEditorPane? AWT, Swing, JavaFX & SWT 3
D Informationen über JEditorPane gesucht AWT, Swing, JavaFX & SWT 2
C Swing Scrollbalken in JEditorPane - WIE? AWT, Swing, JavaFX & SWT 3
destroflyer Swing UTF-8 in JEditorPane darstellen AWT, Swing, JavaFX & SWT 5
J Swing JEditorPane flackert AWT, Swing, JavaFX & SWT 2
F Swing Performanceproblem mit JEditorpane AWT, Swing, JavaFX & SWT 3
S Swing HTML-Text in JEditorPane einfärben AWT, Swing, JavaFX & SWT 5
I JTextPane und Hyperlink (ohne JEditorPane) AWT, Swing, JavaFX & SWT 5
P Swing JEditorPane mit HTMLDocument - Text hinzufügen AWT, Swing, JavaFX & SWT 2
T Swing JEditorPane Groesse berechnen AWT, Swing, JavaFX & SWT 2
N Swing JEditorPane mit Farbe und Font AWT, Swing, JavaFX & SWT 2
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3
B JEditorPane - Absätze werden nicht gespeichert AWT, Swing, JavaFX & SWT 12
K Verweise in JEditorPane AWT, Swing, JavaFX & SWT 6
B JEditorPane - Text und Graphik in HTML speichern AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane wort zu lang AWT, Swing, JavaFX & SWT 11
X Swing Inhalt einer JEditorPane in Datei abspeichern AWT, Swing, JavaFX & SWT 5
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
Developer_X Swing JEditorPane.paste(Lokale_HTML); AWT, Swing, JavaFX & SWT 11
W Swing dynamisch Buttons in JEditorPane erstellen AWT, Swing, JavaFX & SWT 2
H JScrollPane (mit JEditorpane ) resizing AWT, Swing, JavaFX & SWT 2
E Swing File lesen und in JEditorpane AWT, Swing, JavaFX & SWT 2
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
S JEditorPane soll HTML und dann Text anzeigen..? AWT, Swing, JavaFX & SWT 5
T HTML und JEditorPane AWT, Swing, JavaFX & SWT 6
Daniel_L jEditorPane - Formatierten Text in Zwischenablage kopieren? AWT, Swing, JavaFX & SWT 2
R JEditorPane Schriftart und Schriftgröße AWT, Swing, JavaFX & SWT 3
K Instanz von JEditorPane starten AWT, Swing, JavaFX & SWT 3
W HTML-Text mit relativer URL in JEditorPane einlesen AWT, Swing, JavaFX & SWT 10
J Flackern in JEditorPane() AWT, Swing, JavaFX & SWT 14
& eigene Schriftart in JEditorpane AWT, Swing, JavaFX & SWT 2
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
M JEditorPane lädt HTML ohne Bilder AWT, Swing, JavaFX & SWT 2
DeeDee0815 JEditorPane + HTML + <img src=file> + JAR = FALSE AWT, Swing, JavaFX & SWT 3
G JEditorPane + F6 AWT, Swing, JavaFX & SWT 2
I Anordnungsprobleme bei JEditorPane AWT, Swing, JavaFX & SWT 5
ChMaster JEditorPane / HTMLEditorKit AWT, Swing, JavaFX & SWT 3
G JEditorPane | Homepage wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 8
J JEditorPane zeigt nicht alles AWT, Swing, JavaFX & SWT 2
I JEditorPane vorladen der Seiten unterbinden AWT, Swing, JavaFX & SWT 2
P JEditorPane mit HTMLEditorKit Text ausrichten AWT, Swing, JavaFX & SWT 2
T Projekt - ChatClient - JEditorPane - Smilies, Vektor AWT, Swing, JavaFX & SWT 2
N java.awt.Color zu HTML Farbcode (JEditorPane) AWT, Swing, JavaFX & SWT 1
T Grösse einer JEditorPane ändern AWT, Swing, JavaFX & SWT 5
G JEditorPane Zeilenumbruch verhindern AWT, Swing, JavaFX & SWT 2
F wie funktionier JEditorPane AWT, Swing, JavaFX & SWT 8
M jEditorPane String to html AWT, Swing, JavaFX & SWT 2
T DataFlavor für HTML-formatierten Text im JEditorPane AWT, Swing, JavaFX & SWT 8
G Welchen Listener für JEditorPane ? AWT, Swing, JavaFX & SWT 3
G HTML aus JEditorPane drucken AWT, Swing, JavaFX & SWT 2
F Frage zu JEditorPane und Text einfügen AWT, Swing, JavaFX & SWT 2
G JEditorPane HTML-Email versenden AWT, Swing, JavaFX & SWT 2
C getText() sinnlos bei HTMLEditorKit und JEditorPane! AWT, Swing, JavaFX & SWT 11
F Das Standardbild beim JEditorPane ersetzen? AWT, Swing, JavaFX & SWT 8
M Image-Objekte in JEditorPane anzeigen? AWT, Swing, JavaFX & SWT 3
U Bild in JEditorPane oder Aus "" mach' "/&quot AWT, Swing, JavaFX & SWT 2
I how to implement.(About JTable and the JEditorPane) AWT, Swing, JavaFX & SWT 6
S JEditorPane HTML-Text auslesen AWT, Swing, JavaFX & SWT 2
M JEditorPane und HyperLinks AWT, Swing, JavaFX & SWT 9
B JEditorPane: Höhe für bestimmte Breite bestimmen AWT, Swing, JavaFX & SWT 4
S Link in JEditorPane AWT, Swing, JavaFX & SWT 5
M JEditorPane und Bild als html? AWT, Swing, JavaFX & SWT 7
F Link aus JEditorPane ausführen AWT, Swing, JavaFX & SWT 2
S HTML-Datei in Anwendung (JEditorPane) AWT, Swing, JavaFX & SWT 5
M Jeditorpane + zeilenumbruch AWT, Swing, JavaFX & SWT 2
N File von HDD in JEditorPane laden? AWT, Swing, JavaFX & SWT 2
B In JScrollPane eingebettetes JEditorPane scrollen AWT, Swing, JavaFX & SWT 2
L Image Problems with JEditorPane AWT, Swing, JavaFX & SWT 7
D Kann jeditorPane CSS Style-Sheets und javascript AWT, Swing, JavaFX & SWT 2
T JEditorPane-content drucken AWT, Swing, JavaFX & SWT 2
T HTML in JEditorPane darstellen AWT, Swing, JavaFX & SWT 5
C JEditorPane, HTML EditorKit und HTMLDocument AWT, Swing, JavaFX & SWT 8
bernd Zeilenumbruch in JEditorPane AWT, Swing, JavaFX & SWT 10
S JEditorPane: Benachrichtigung, wenn Inhalt geladen AWT, Swing, JavaFX & SWT 2
M JEditorPane und Strg - z? AWT, Swing, JavaFX & SWT 2
S JEditorPane setText() Problem mit String übergeben AWT, Swing, JavaFX & SWT 3
S JEditorPane Tags löschen AWT, Swing, JavaFX & SWT 3
S JEditorPane AWT, Swing, JavaFX & SWT 2
B JavaFX ListView in Kombination mit TextField AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben