[JAVA] Swing, problema Clicca QUI per vedere il messaggio nel forum |
PuDDu |
Salve, volevo sapere se qualcuno si è destreggiato con la API grafica di Java, Swing.
So che nel corso di java non è mai stato affrontato (purtroppo) ma io mi sto dilettando ad imparare un po' di programmazione in java con interfaccia grafica, appunto con Swing.
Il mio problema è questo:
sto creando un piccolo e semplice editor testuale, che ricalchi le funzioni di notepad, ma scritto in Java.
Per farlo uso un po' di compenenti di Swing, come le JMenuBar e le JTextComponent (JTextArea, JEditorPane) ma non funzionano alcune cose.
Se uso una JTextArea per visualizzare il testo, posso fare diverse cose carine, come formattarlo per farlo andare a capo alla fine della finestra (come la funzione "a capo automatico" di Notepad, per intenderci) ma siccome JTextArea "manipola" solo stringhe, l'unico modo per aprire file di testo con il mio programmino è quello di "appendere" le stringhe con un filestream una dietro l'altra e printarle sulla TextArea, con lo spiacevole effetto che una volta aperto un testo la barretta lampeggiante dell'inserimento carattere -> | (non mi ricordo come si chiama, spero capiate a cosa mi riferisco :D) si trova IN FONDO al documento e quindi il documento stesso e visualizzato nella finestra dal fondo.
Ho provato ad usare allora JEditorPane, component che permette di visualizzare oltre a plaintext anche HTML e RTF e che manipola sia string che "page" e che una volta aperto un file lo visualizza come si deve, ma non ha le funzioni di a capo automatico, cosa alquanto sgradevole.
La mia domanda è questa: qualcuno sa come potrei fare tornare la barretta a inizio documento ed evitare di "appendere" le stringhe una dietro l'altra per aprire un file con JTextArea?
Oppure mettere l'a capo automatico a JEditorPane?
Grazie, se volete vi mando anche i sorgenti per spiegarvi in dettaglio.
Ciao |
aesse |
usando JTextarea puoi sia appendere stringhe alla textarea, sia leggere tutto il tuo file, memorizzarlo in una stringa, e aggiungere la stringona alla textarea (dovrebbe esserci un setText() derivato da TextComponent o qualcosa del genere).
Per spostare il cursore secondo me potresti tentare di giocare con (vado a memoria quindi controlla sulla documentazione) con setSelectionStart() e setSelectionEnd(), oppure usando la classe Caret (setCaretPosition() ).
p.s. prendi tutto ciò che dico con le pinze..fino a qualche mese fa non sapevo neanche cosa fosse la programmazione ad oggetti! |
PuDDu |
Grazie mille! Ho risolto usando setCaretPosition.
Ora però ho un altro dubbio:
c'è un modo di "cancellare" (repaint sarebbe più adatto) una JTextArea?
Ovvero, quando apro un nuovo file il mio algoritmo "riappende" il testo a quello già presente nella finestra.
So che ci deve essere, ma non so dove. |
PuDDu |
Grazie Omar, ora funza tutto!
Anche io appena avrò finito di implementare l'apertura-salvataggio dei documenti e altre cosette, mi dovrò smazzare il printing, ma per ora so poco o nulla. |
morf |
... mi sento tanto ignorante ... |
PuDDu |
JAVA :rulez:
Morf :asd: |
morf |
Off-Topic: io in verità java l'ho fatto un po' per l'esame di Informatica Generale del primo semestre ... ma leggere tutto questo mi fa capire che ho fatto davvero il minimo :roll: |
Quartermaster |
:? saimo in due morf...:cry: |
ToBlEr:OnE |
Morf, hai passato l'esame con un over 20. La cosa ti procura solo stima ed invidia.
Vai in pace... |
webnoise |
anche perche' il cammino e' lungo.... l'anno prox vedrai che belle sorprese :D |
Rifinitore |
che tipo di sorprese ? |
webnoise |
che il secondo anno e' molto impegnativo IN TUTTI I SENSI... a buon intenditor poche parole.... :evil: :) |
0m4r |
Originally posted by webnoise
che il secondo anno e' molto impegnativo IN TUTTI I SENSI... a buon intenditor poche parole.... :evil: :)
non dirlo a me che sto finendo il terzo (gne gne gne gne!) |
Lunik |
Off-Topic: Siete OT caxxo!! :cagatemi: |
|
|
|