Texte unterstreichen?



  • Hi zusammen,
    ich benötige ein Textfeld mit Scrollleiste (Text ist lang), in dem man aber Texte unterstreichen, fett machen kann (zur Strukturierung).
    Gibts da was? (Kurzer Hinweis würde mir schon genügen!)
    Gruß, Tobias



  • ok, ich habs hinbekommen mit:
    JEditorPane und JScrollPane, JScrollBar
    aber:
    meine Scrollbar ist immer ganz unten!
    Klappt auch nicht mit:

    this.add(jScrollPane, BorderLayout.CENTER );
        JScrollBar sb = new JScrollBar();
        sb.setValue(sb.getMinimum());
        jScrollPane.setVerticalScrollBar(sb);
    

    Weiß jmd. was darüber?
    Gruß, Tobias



  • weiß keiner, warum die Scrollbar immer unten ist?



  • IIRC musst du im Dokument die Cursorposition setzen.

    Bye, TGGC (Der Held ist zurück)



  • hm... und was bedeutet das? (IIRC)
    Gruß, Tobias





  • Ok, danke!
    Aber:
    Wo stelle ich die Position denn ein?

    In einer Methode makeView, die vom Konstruktor aufgerufen wird...
    Oder darf ich das nicht im Konstruktor machen??
    Der Text wird dort auch eingefügt (natürlich davor!)

    Gruß, Tobias



  • Hi, vielleicht hilft ja etwas Source-Code weiter?
    Es handelt sich um diese Stelle:

    jScrollPane.setVerticalScrollBar(sb);
    

    ..Ich hab es auch schon mit 0, 100, getMaxVale, getMinVal versucht...
    Gruß,Tobias

    // HelpFrame
    // - Hilfe für SpApplet
    
    import java.awt.Frame;
    import java.awt.BorderLayout;
    import java.awt.Scrollbar;
    import java.awt.TextArea;
    import java.awt.Color;
    import java.io.*;
    import java.awt.event.*;
    import java.awt.Button;
    import javax.swing.*;
    import java.net.URL;
    
    public class HelpFrame extends Frame implements WindowListener, ActionListener {
    
      // =======================================================================
      // Konstruktor, etc...
      // =======================================================================
    
      public HelpFrame(String LANG) {
        this.LANG = LANG;
        this.filename = prefix+LANG;
        // Hilfe-Datei Einlesen
        try { readHelpFile(filename); }
        catch(Exception e) {}
        // Ansicht basteln
        makeView();
        // Einstellungen
        this.setResizable(false);
        this.addWindowListener(this);
        this.setTitle(lines[0]);
      }
    
      public void start() {
        this.setSize( 600,450 );
        this.setResizable(false);
        this.setVisible(true);
      }
    
      // Hilfe-Datei Einlesen
      public void readHelpFile(String filename) throws Exception {
        nLines = 0;
        String line;
        // Datei öffnen
        //BufferedReader bf;
        //File f = new File(filename);
        //FileInputStream in = new FileInputStream(f);
        //bf = new BufferedReader(new InputStreamReader(in));
        // Datei Öffnen aus JAR-Datei
        URL url = getClass().getResource(filename);
        BufferedReader bf = new BufferedReader(new InputStreamReader(url.openStream()));
        // Einlesen
        line = bf.readLine();
        while( line!=null ) {
          lines[nLines++] = line;
          line = bf.readLine();
        }
      }
    
      // Ansicht basteln
      public void makeView() {
        setLayout(new BorderLayout());
        // Füllen
        String temp, ta;
        ta="";
        for(int i=1;i<nLines;i++) { // erste Zeile ist der Titel!
          temp = lines[i]+"<br>\n";
          if( temp.charAt(0)=='|' ) {
            temp = "<u><b>"+temp.substring(1)+"</u></b>";
          }
          else if( temp.charAt(0)=='%' ) {
            temp = "<b>"+temp.substring(1)+"</b>";
          }
          else if( temp.charAt(0)=='=' ) {
            temp = "<i>"+temp.substring(1)+"</i>";
          }
          ta+=temp;
        }
        // Pane
        JScrollPane jScrollPane = new JScrollPane();
        JEditorPane jep = new JEditorPane("text/html",ta);
        jep.setBackground(Color.white);
        jep.setForeground(Color.black);
        jep.enableInputMethods(false);
        jep.setEditable(false);
        jScrollPane.getViewport().add(jep, null);
        this.add(jScrollPane, BorderLayout.CENTER );
        JScrollBar sb = new JScrollBar();
        sb.setValue(sb.getMinimum());
        jScrollPane.setVerticalScrollBar(sb);
    
        // Button
        close = new Button("Fenster schliessen");
        close.addActionListener(this);
        this.add(close, BorderLayout.SOUTH );
    
      }
    
      // Fenster schliessen
      public void closeWindow() {
        this.setVisible(false);
        this.dispose();
      }
    
      // =======================================================================
      // ActionListener
      // =======================================================================
    
      public void actionPerformed(ActionEvent e) {
        if( close == e.getSource() ) {
          closeWindow();
        }
      }
    
      // =======================================================================
      // WindowListener
      // =======================================================================
    
      public void windowClosing( WindowEvent event ) {
        closeWindow();
      }
      public void windowClosed( WindowEvent event ) {}
      public void windowDeiconified( WindowEvent event ) {}
      public void windowIconified( WindowEvent event ) {}
      public void windowActivated( WindowEvent event ) {}
      public void windowDeactivated( WindowEvent event ) {}
      public void windowOpened( WindowEvent event ) {}
    
      // =======================================================================
      // Globale Variablen
      // =======================================================================
    
      // Variablen für den Dateinamen
      static String prefix = "hilfetext.";
      String LANG, filename;
      // Hilfe-Datei
      int nLines;
      static int maxLines = 999;
      String[] lines = new String[maxLines];
      Button close;
    
    }
    




  • ok, danke vielmals, aber:
    D.h. jetzt, dass ich eine TextPane nehmen muss und das nicht anders klappt?
    Ist da nicht irgendwie ein Haken drinnen?
    Gruß, Tobias



  • Hi,

    diese Funktion stelle ja JEditorPane auch zur Verfügung..

    Wenn ichdas jetzt aber mache, also:

    jep.setCaretPosition(0);
    

    Dann passiert nix anderes, als das die Scrollbar immer noch ganz unten ist!

    Scheint also bei mir doch scheinbar nicht daran zu liegen!
    Has tnicht zufällig irgendeine Idee???

    Gruß, Tobias



  • Hi,
    ich glaub, ich hab da was nicht richtig kompiliert...
    Auf jeden Fall klappt es jetzt mit dem setCaretP...
    Danke!!!
    Gruß,
    Tobias


Anmelden zum Antworten