|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2005
Città: Livorno
Messaggi: 442
|
[JAVA] emulare console
ciao a tutti, volevo sapere se è in qualche modo possibile emulare la console, tramite una jlabel.
mi spiego meglio. vorrei che tutto quello che viene "scritto" dal sistema nella console venisse scritto anche in una jlabel, che quindi mi servirebbe solo come output, non come input... questo ovviamente non solo per i vari system.out ma anche printstacktrace et similia. ciao! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
certo che puoi
![]() ![]() ![]() scusa, ma le JLabel, hanno la stampa, e inceve di fare un System.out.println(x); fai un label.setText(x); dov'è il problema???
__________________
My gaming placement |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
La cosa è sicuramente fattibile. La classe System fornisce ad esempio il metodo setOut(PrintStream out) che permette di riassegnare lo standard output. Il problema semmai è: che PrintStream devo avere e/o creare da passargli??? ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
Credo di si, e quello che ha detto andbin sia il metodo giusto. EDIT:questo è quello che dice le API di JAVA static void setOut(PrintStream out) Reassigns the "standard" output stream.
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2005
Città: Livorno
Messaggi: 442
|
uhm... e come associare il printstream alla mia jtextarea?
![]() ciao! EDIT sto dando un'occhiata alle API ma non è che ci capisca molto... se qualcuno può scrivermi un esempino ![]() ciau! Ultima modifica di Wilcomir : 25-07-2006 alle 21:20. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ci ho provato e .... sono riuscito. Il codice l'ho scritto un po' in fretta (vorrei andare a dormire
![]() Codice:
import java.io.*; import javax.swing.*; public class RedirectTestFrame extends JFrame { private JTextArea ta; private JTextAreaOutputStream taos; public RedirectTestFrame () { super ("Redirect Test Frame"); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); setSize (300, 300); ta = new JTextArea (); add (ta); taos = new JTextAreaOutputStream (ta); System.setOut (new PrintStream (taos)); } public static void main (String[] args) { RedirectTestFrame f = new RedirectTestFrame (); f.setVisible (true); System.out.println ("1 Ciao, stampa nella textarea!!!"); System.out.println ("2 Ciao, stampa nella textarea!!!"); System.out.println ("3 Ciao, stampa nella textarea!!!"); System.out.println ("4 Ciao, stampa nella textarea!!!"); } } class JTextAreaOutputStream extends OutputStream { private JTextArea ta; public JTextAreaOutputStream (JTextArea ta) { this.ta = ta; } public void write (int b) throws IOException { ta.append ("" + (char) b); } } Enjoy. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2005
Città: Livorno
Messaggi: 442
|
se non sei ancora andato a dormire... ma il JTextAreaOutputStream dove l'hai trovato? gli import sono gli stessi, e in ogni caso non lo trovo nelle API
![]() ciao! EDIT che idiota è la classe sotto... come non detto ![]() RIEDIT funziona alla grande! grazie! ciaoo! Ultima modifica di Wilcomir : 25-07-2006 alle 22:04. |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quindi basta fare l'override di write(int b) che però prende in input 1 byte nudo e crudo, non un char. Questo vuol dire che facendo una: System.out.println ("Questa \u00e8 una prova"); la 'e' accentata (indicata in unicode come \u00e8) verrebbe visualizzata nella TextArea come un quadratino. ![]() In teoria si dovrebbe estendere la classe PrintStream però si dovrebbe fare l'override di tutti i metodi print(xxx) e println(xxx) come minimo. Adesso ci provo e vedo cosa salta fuori. ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:43.