Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    JAVA Frame

    Qualcuno sa come si puo fare a leggere riga per riga da una TextArea in un Frame???
    perchè usando il method getText() e uguagliandolo a una Stringa mi ritorna in blocco tutto quello che c'è scritto nella TextArea....

  2. #2
    il metodo getText effettivamente ti riporta in un unica stringa tutto il testo contenuto nella text area.
    potresti però utilizzare uno StringTokenizer sulla stringa ottenuta, utilizzando come carattere separatore dei token il carattere di accapo.
    Tieni conto che però all'interno della text area il testo può andare a capo anche se effettivamente non c'è un carattere di accapo, a seconda della policy di line wrapping che è stata impostata nella text area stessa.
    Dai una occhiata comunque quihttp://java.sun.com/j2se/1.4.2/docs/...JTextArea.html per sapere di più sulla JTextArea e sul discorso del line wrapping.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    E' un po' laborioso, ma si può fare:

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class textAreaLines extends JFrame implements ComponentListener {
      
      JScrollPane scr;
      JTextArea ta = new JTextArea();
      
      public void componentHidden (ComponentEvent ce) {
        
      }
      
      public void componentMoved (ComponentEvent ce) {
        
      }
      
      public void componentResized (ComponentEvent ce) {
        System.out.println("COMPONENTE RIDIMENSIONATO\n________________________\n");
        System.out.println("La textarea ha: "+ta.getLineCount()+" righe");
        try {
          for (int i = 0; i < ta.getLineCount(); i++) {
            System.out.println("La riga " + i + " contiene " +
                               (ta.getLineEndOffset(i)-ta.getLineStartOffset(i))+ " caratteri");
            System.out.println("Il testo della riga "+i+" è: "+ta.getText(ta.getLineStartOffset(i), ta.getLineEndOffset(i)-ta.getLineStartOffset(i)));
          }
        }
        catch (Exception e) {
          System.out.println(e.toString());
        }
      }
      
      public void componentShown (ComponentEvent ce) {
        
      }
    
      public textAreaLines() {
        super("Prova testo");
        this.setSize(400, 500);
        this.getContentPane().setLayout(new BorderLayout());
        scr = new JScrollPane(ta);
        ta.setText("Questo è solo un testo di prova, contiene caratteri\ndi acapo e altre amenità varie\n\nQuesto è solo un testo di prova, contiene caratteri di acapo e altre amenità varie\nQuesto\n è solo un testo di prova, contiene caratteri di acapo e altre amenità\n varie");
        ta.setLineWrap(true);
        ta.setWrapStyleWord(true);
        this.getContentPane().add(scr, BorderLayout.CENTER);
        this.addComponentListener(this);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        System.out.println("La textarea ha: "+ta.getLineCount()+" righe");
      }
      
      public static void main (String[] args) {
        textAreaLines tal = new textAreaLines();
      }
    }
    Praticamente c'è una versione di getText che prende un offset all'interno del componente di testo su cui viene applicato e la lunghezza della stringa da andare a recuperare da quell'offset. I metodi per prendere gli offset di inizio e fine riga sono propri di JTextArea.
    Ciao.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64
    Grazie sono riuscito a risolvere il problema

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.