Visualizzazione dei risultati da 1 a 2 su 2

Hybrid View

  1. #1

    Output di un comando su componente SWING

    ciao!

    ho un programmino che si lancia da terminale e cha ha già una sua "progress bar".
    io vorrei creare una interfaccia grafica, in modo da dover solo passare i parametri al comando (fin qui ok).
    vorrei, però, anche prendere in tempo reale l'output del comando e piazzarlo sull'interfaccia.
    è possibile?
    in caso, quale componente sarebbe più adatto?
    potete darmi qualche linea guida please?
    grazie!

  2. #2
    ok questo sembra funzionare abbastanza bene:
    codice:
    public class StartYDL implements Runnable {
    
        protected final JTextArea textArea;
        protected Reader reader = null;
    
        public StartYDL(JTextArea textArea) {
            this.textArea = textArea;
        }
    
        public void commence(Process p) {
            InputStream in = p.getInputStream();
            reader = new InputStreamReader(in);
            Thread thread = new Thread(this);
            thread.start();
        }
    
        @Override
        public void run() {
            StringBuilder sb = new StringBuilder();
            try {
                while (reader != null) {
                    int c = reader.read();
                    if (c == -1) {
                        return;
                    }
    
                    sb.append((char) c);
                    setText(sb.toString());
                }
            } catch (IOException ex) {
                sb.append("\n\nERROR:\n").append(ex.toString());
                setText(sb.toString());
            } finally {
                try {
                    reader.close();
                } catch (IOException ex) {
                    sb.append(ex.getMessage());
                }
            }
        }
    
        private void setText(final String text) {
            EventQueue.invokeLater(() -> {
                textArea.setText(text);
            });
        }
    }
    usando una JTextArea.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.