segunda-feira, 10 de outubro de 2011

Executando Comando Shell pelo Java - Parte 2

Através do conceito de chamada de execução Shell pelo Java (comando Runtime.exec("nome do comando"); ) construí um aplicativo com uma interface grafica para rodar comandos em Dos e Shell através do Java. Segue o código que deve ser exportado num arquivo jar executável.

import javax.swing.*;

import java.awt.event.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CordaoUmbilical extends JFrame implements ActionListener {
    /**
     * @since 27/09/2011
     */
    private static final long serialVersionUID = -4400536034133334969L;
    JButton b1;
    JFrame frame;
    JPanel panel;
    JTextArea textArea;
    JTextField textField;
    JScrollPane spane;

    public static void main(String[] args) {
        CordaoUmbilical v = new CordaoUmbilical();
    }

    public CordaoUmbilical() {

        b1 = new JButton("Comando");
        b1.setMnemonic(KeyEvent.VK_A);
        b1.setActionCommand("Run");
        b1.addActionListener(this);
        b1.setToolTipText("Click neste botão para " + "executar o comando");
        frame = new JFrame("Janela de Comando");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        panel = new JPanel();
        textArea = new JTextArea(30, 60);
        spane = new JScrollPane(textArea);
        spane.getHorizontalScrollBar();
        spane.getVerticalScrollBar();
        textField = new JTextField(10);
        panel.add(textField);
        panel.add(b1);
        panel.add(spane);
        frame.add(panel);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        String entrada = textField.getText();
        try {
            Process p = Runtime.getRuntime().exec(entrada);
            StringBuffer str = new StringBuffer();
            BufferedReader in = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                str.append(line + "\n");
            }

            textArea.append(str.toString() + " ");
            textField.selectAll();

        } catch (Exception e2) {

            for (StackTraceElement iterable_element : e2.getStackTrace()) {
                textArea.append(iterable_element.toString() + "\n");
            }
            JOptionPane.showMessageDialog(null, "Digite um comando válido!",
                    "Erro de execução", JOptionPane.ERROR_MESSAGE);
        }

    }

}

Nenhum comentário:

Postar um comentário