elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Interfaz grafica en java para un script shell de unix
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Interfaz grafica en java para un script shell de unix  (Leído 6,228 veces)
wilmer.rondon

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Interfaz grafica en java para un script shell de unix
« en: 28 Mayo 2007, 22:27 pm »

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


En línea

Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



Ver Perfil WWW
Re: Interfaz grafica en java para un script shell de unix
« Respuesta #1 en: 29 Mayo 2007, 00:45 am »

Pues mas que una duda, tu post es un aporte... la pregunta es si vas bien? pues en ese caso: sí, vas muy bien... el código compila a la perfección y hace lo que tiene que hacer.

Lo único que te pido es que utilices las etiquetas code cuando postees código, gracias.

Saludos!!!


En línea

wilmer.rondon

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Interfaz grafica en java para un script shell de unix
« Respuesta #2 en: 30 Mayo 2007, 16:06 pm »

hola:

la aplicion funciona bien en windows cuando ejecuto comandos como "dir", "cd",
"vol", es decir me muestra perfectamente la salida de dichos comandos.

en Unix tambien funciona cuando ejecuto comandos como "ls", "pwd" entre otros.

el problema que tengo es que cuando ejecuto un comando que necesite de un posterior ingreso de datos la aplicacion se tranca.

por ejemplo:

cuando ingreso el comando "date" en windows me muestra la fecha actual y me pide ingresar una nueva fecha para actualizarla. es aqui cuando se tranca el programa y tengo que cerrarlo forzosamente

igual me pasa para un script en unix que requiere ingreso de datos posterior a su ejecucion

entiendo que runtime.exec() ejecuta un comando en la ruta especifica pero despues termina el proceso.

como hago para poder ingresar datos e interactuar con la shell una vez que la inicializo???

espero haber sido lo mas claro posible...

muchas gracias por tu ayuda...
En línea

wilmer.rondon

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Interfaz grafica en java para un script shell de unix
« Respuesta #3 en: 30 Mayo 2007, 16:07 pm »

Pues mas que una duda, tu post es un aporte... la pregunta es si vas bien? pues en ese caso: sí, vas muy bien... el código compila a la perfección y hace lo que tiene que hacer.

Lo único que te pido es que utilices las etiquetas code cuando postees código, gracias.

Saludos!!!


hola:

la aplicion funciona bien en windows cuando ejecuto comandos como "dir", "cd",
"vol", es decir me muestra perfectamente la salida de dichos comandos.

en Unix tambien funciona cuando ejecuto comandos como "ls", "pwd" entre otros.

el problema que tengo es que cuando ejecuto un comando que necesite de un posterior ingreso de datos la aplicacion se tranca.

por ejemplo:

cuando ingreso el comando "date" en windows me muestra la fecha actual y me pide ingresar una nueva fecha para actualizarla. es aqui cuando se tranca el programa y tengo que cerrarlo forzosamente

igual me pasa para un script en unix que requiere ingreso de datos posterior a su ejecucion

entiendo que runtime.exec() ejecuta un comando en la ruta especifica pero despues termina el proceso.

como hago para poder ingresar datos e interactuar con la shell una vez que la inicializo???

espero haber sido lo mas claro posible...

muchas gracias por tu ayuda...
En línea

Casidiablo
Desarrollador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.919



Ver Perfil WWW
Re: Interfaz grafica en java para un script shell de unix
« Respuesta #4 en: 1 Junio 2007, 21:15 pm »

Pues hace tiempo leí algo de el método waitFor o algo así, pero NUNCA lo he probado... lo único que se me ocurre es pedir primero los datos al usuario con un JOptionPane, por ejmplo, pero en ese caso habría que validar primero qué datos requiere un determinado comando.

Saludos!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Shell script] Un pequeño script para ver temperaturas.
Scripting
manute_powa 3 6,027 Último mensaje 7 Enero 2012, 02:18 am
por manute_powa
urgente matriz con interfaz grafica en java
Java
fracool 1 7,364 Último mensaje 23 Febrero 2012, 13:47 pm
por Cazs03
Ayuda con Java Interfaz Gráfica
Java
Senior++ 5 5,050 Último mensaje 15 Abril 2012, 10:14 am
por Senior++
[MOD] Script para redireccionar paquetes de una interfaz a otra
Scripting
D3mian 0 1,983 Último mensaje 22 Mayo 2013, 16:45 pm
por D3mian
Interfaz Grafica Java
Java
latinoalfredo 3 3,041 Último mensaje 25 Noviembre 2013, 08:38 am
por latinoalfredo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines