HighLighting

RealHAZZARD

Erfahrenes Mitglied
Servus.

Ich möchte mir einen TextHightlighter bauen. Und weiß nicht wirklich wie anfangen soll.
Es gibt ja unterschiedliche Möglichkeiten das um zu setzen, aber ich hätte schon gern auch eine Möglichkeit, die auch etwas Performance-schonend ist.
Hat da jemannd Erfahrung?
Welche Klassen oder Seiten sollte ich mir da einmal anschauen?

THX
 
Bereits mit einem JEditorPane kann man bestimmte Texteausschnitte hervorheben:

Java:
import java.awt.*;
import javax.swing.*;

public class HighLighter extends JFrame {
  
  private JEditorPane ep;
  
  public static void main(String[] args) {
    if (args.length > 1) {
      new HighLighter(args[0], args[1]);
    } else {
      new HighLighter("Ich bin ein Beispieltext und ein ziemlich kurzer Text noch dazu.", "ein");
    }
  }
  
  public HighLighter(String text, String select) {
    super();
    text = "<html><head></head><body><p>" + text.replaceAll(select, "<font color=\"FF0000\"><b>" + select + "</b></font>") + "</p></body></html>";
    this.ep = new JEditorPane("text/html", text);
    Container c = this.getContentPane();
    c.setLayout(new GridLayout(1,1));
    c.add(ep);
    this.setSize(200, 100);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
  }
  
}
 

Anhänge

  • highlighter.gif
    highlighter.gif
    4,2 KB · Aufrufe: 40
Zuletzt bearbeitet von einem Moderator:
Danke erstmal.
Achso. OK. An htmltext hab ich erstmal nicht gedacht.
Ich hatte vergebens nach einer Möglichkeit gesucht,
welche direkt dem Text Attribute wie Farbe und Größe usw.
setzt.
Ich schau mir das demnächst mal näher an.
THX
 
Hallo!

Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

/**
 * @author Tom
 * 
 */
public class HighlightingExample extends JFrame {

    public HighlightingExample() {
        super("HighlightingExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JTextPane editorPane = new JTextPane();
        StyledDocument doc = new DefaultStyledDocument();
        editorPane.setDocument(doc);
        editorPane.setText("www.tutorials.de");
        
        MutableAttributeSet attributeSet = new SimpleAttributeSet();
        StyleConstants.setForeground(attributeSet,Color.BLUE);
        
        doc.setCharacterAttributes(4,9,attributeSet,false);
        
        JScrollPane scrollPane = new JScrollPane(editorPane);
        scrollPane.setPreferredSize(new Dimension(320, 240));
        add(scrollPane);

        pack();
        setVisible(true);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new HighlightingExample();
    }

}

Gruß Tom
 
Hey,

super danke. Aber ich verstehe dein Beispiel noch nicht ganz.
Welche Rolle spielt das StyledDocument denn darin?
Was machst du in Zeile 34? Woher kommen denn die StyleConstants?
Wird in dem Beispiel schon irgendwas gehighlighted?
 
Zurück