hola:
estoy desarrollando una aplicacion en Java y realmente no tengo mucha experiencia con este lenguaje.
tengo varios scripts en unix que automatizan tareas rutinarias.
deseo hacer una interfaz grafica con java para ejecutarla en xwindows que me permita ejecutar los scripts de unix haciendo click en un boton y poder visualizar en un cuadro de texto de la misma interfaz grafica las repuestas que se generen en la shell.
no se si queda claro el objetivo de mi interfaz grafica
espero que me puedan ayudar
aqui les dejo el codigo de unas pruebas que he ido haciendo para probar no se si voy por buen camino
// Sistema de Gestión MTSO San Cristóbal
// Realizado por: Wilmer Rondón
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Color;
import javax.swing.JTabbedPane;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.io.*;
// CLASE PRINCIPAL DEL PROGRAMA
public class Ventana extends JPanel
{
protected JTextField texto1;
protected JTextArea texto2;
protected JPanel p1, p2;
protected JButton btOK, btQuitar, btSalir;
protected String texto1Inicio;
protected Color B, F1, F2, F3;
protected int orden;
protected final static String newline = "\n";
public Ventana()
{
ImageIcon icon1 = new ImageIcon("images/BotonInicioOff.gif");
ImageIcon icon2 = new ImageIcon("images/BotonSalirOff.gif");
JTabbedPane pestanas = new JTabbedPane();
Component panel_pestana1 = pestana1("Pestana Uno"); //Linea 35
pestanas.addTab("Comandos", icon1, panel_pestana1);
Component panel_pestana2 = pestana2("Pestana Dos");
pestanas.addTab("Etiqueta", icon2, panel_pestana2);
setLayout(new GridLayout(1, 1));
add(pestanas);
}//Fin Constructor Ventana
protected Component pestana1(String text)
{
p1 = new JPanel(new BorderLayout()); // panel Principal
p2 = new JPanel(new GridLayout(1,3)); // panel para 3 botones en BorderLayout.SOUTH
p1.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
texto1 = new JTextField(40);
texto1.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
texto1Inicio = "Escriba aquí un comando y haga click sobre el botón \"OK\"";
texto1.setText(texto1Inicio);
texto2 = new JTextArea(10,40);
texto2.setEditable(false);
texto2.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
B = new Color(200,200,200);
texto2.setBackground(B);
F1 = new Color(0,0,0);
texto2.setForeground(F1);
texto2.append("#");
JScrollPane pScroll = new JScrollPane(texto2, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
btOK = new JButton("OK");
btQuitar = new JButton("Limpiar pantalla");
btSalir = new JButton("Salir");
texto1.addActionListener(new ponerTexto());
btOK.addActionListener(new ponerTexto());
btQuitar.addActionListener(new limpiarPantalla());
btSalir.addActionListener(new cerrarVentana());
p1.add(texto1, BorderLayout.NORTH);
p1.add(pScroll, BorderLayout.CENTER);
p1.add(p2,BorderLayout.SOUTH);
p2.add(btOK);
p2.add(btQuitar);
p2.add(btSalir);
btOK.setToolTipText("Ingresar Comando"); //Linea 78
btQuitar.setToolTipText("Limpiar la Pantalla");
btSalir.setToolTipText("Salir de la aplicación");
return p1;
}//Fin método pestana1
protected Component pestana2(String text)
{
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
JButton boton = new JButton(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout(new GridLayout(2, 2));
panel.add(boton);
panel.add(filler);
return panel;
}
// MÉTODO DE ENTRADA AL PROGRAMA
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Sistema de Gestión MTSO San Cristóbal");
frame.getContentPane().add(new Ventana(), BorderLayout.CENTER);
frame.setSize(1280, 770);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// CLASE QUE AnADE LÍNEAS DESDE JTEXTFIELD A TEXTAREA
class ponerTexto implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
String texto = texto1.getText();
try
{
// Se lanza el ejecutable.
Process p = Runtime.getRuntime().exec("cmd /c " + texto);
// Se obtiene el stream de salida del programa
InputStream is = p.getInputStream();
// Se prepara un bufferedReader para poder leer la salida más
// comodamente.
BufferedReader br = new BufferedReader (new InputStreamReader (is));
// Se lee la primera linea
String aux = br.readLine();
// Mientras se haya leido alguna linea
while (aux!=null)
{
// Se escribe la linea en pantalla
texto2.append(aux + newline);
texto2.setCaretPosition(texto2.getDocument().getLength());
texto1.setText("");
// y se lee la siguiente.
aux = br.readLine();
}
}
catch (Exception e)
{
// Excepciones si hay algún problema al arrancar el ejecutable o al
// leer su salida.
e.printStackTrace();
}
}
}
// CLASE QUE VACÍA TEXTAREA
class limpiarPantalla implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
texto1.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
F3 = new Color(0,0,0);
texto1.setForeground(F3);
texto1.setText(texto1Inicio);
texto2.setText("");
texto2.append("#");
}
}
// CLASE QUE SALE DEL PROGRAMA
class cerrarVentana implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
System.exit(0);
}
}
}//Fin class Ventana