Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Ayuda con un Jframe porfavor

Hola amigos, gusto de saludarles, tengo un problema, a ver si me pueden ayudar.

Tengo una classe llamada SSHCommandExecutor que ejecuta un comando en un servidor unix remoto.

import com.jcraft.jsch.*;
import java.io.InputStream;



public class SSHCommandExecutor {

public static void main(String[] args) {
String host="nombredeservidor";
String user="nombredeusuario";
String password="password";
String command1="top -bn 1";
try{

java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");

Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command1);
channel.setInputStream(null);
((ChannelExec)channel).setErrStream(System.err);

InputStream in=channel.getInputStream();
channel.connect();
byte[] tmp=new byte[1024];
while(true){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed()){
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
}
channel.disconnect();
session.disconnect();
System.out.println("DONE");
}catch(Exception e){
e.printStackTrace();
}

}

}
//fin de la clase

**********************************************************************************************************************************************************************************************************
Tengo una segunda clase que contiene toda la parte grafica.


package menu_operaciones;

import static com.sun.java.accessibility.util.AWTEventMonitor.addActionListener;
import static java.awt.AWTEventMulticaster.add;
import javax.swing.JOptionPane;


public class MenuExecutor extends javax.swing.JFrame {


public MenuExecutor() {
initComponents();
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jInternalFrame1 = new javax.swing.JInternalFrame();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jInternalFrame1.setVisible(true);

jButton1.setText("Ejecutar \"top -bn 1\"");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("SALIR");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane2.setViewportView(jTextArea1);

javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
jInternalFrame1Layout.setHorizontalGroup(
jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 436, Short.MAX_VALUE)
.addComponent(jButton2)
.addGap(20, 20, 20))
.addComponent(jScrollPane2)
);
jInternalFrame1Layout.setVerticalGroup(
jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 372, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jInternalFrame1, javax.swing.GroupLayout.Alignment.TRAILING)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jInternalFrame1, javax.swing.GroupLayout.Alignment.TRAILING)
);

pack();
}// </editor-fold>

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose(); // TODO add your handling code here:
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

}


public static void main(String args[]) {

try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MenuExecutor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MenuExecutor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MenuExecutor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MenuExecutor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MenuExecutor().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JInternalFrame jInternalFrame1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
}
***************************************************************************************************
***************************************************************************************************

Como puedo hacer para que al presionar el boton "Ejecutar top -bn 1" despliegue en el text area la salida de la primera clase?

De antemano les agradezco.
Saludos
Claudio

septiembre 26, 2014 | Unregistered CommenterClaudiopq23

Tienes dos clases independientes entre sí, y cada una con un método main...
Creo que necesitas estudiar conceptos básicos de Java, relativos a clases:
http://docs.oracle.com/javase/tutorial/java/javaOO/classes.html

septiembre 27, 2014 | Registered Commenterchoces

choces, NetBeans añade un main a los JFrame (y no recuerdo ahora si también a los JDialog) para facilitar probar su comportamiento de manera independiente al resto de la aplicación. Cuando están suficientemente depurados, se borra el main y listo. :-)

Claudiopq23, choces tiene razón en que tienes que estudiar conceptos básicos de Java. Por ejemplo, no hay ningún botón "Ejecutar top -bn 1". Hay un botón, jButton1, con ese texto en su etiqueta.

jButton1 tiene un ActionListener que ejecuta un método cuando se pulsa el botón. Ese método invoca, a su vez, al método jButton1ActionPerformed(), que tienes en tu código y está vacío (también lo está el del otro botón, jButton2ActionPerformed()).

Qué instrucciones tienes que escribir para rellenar el JTextArea con el texto que te interese es lo que tienes que averiguar tú, y si entiendes mínimamente cómo funciona la programación orientada a objetos te será más fácil. NetBeans, Eclipse o cualquier IDE de Java te ayudarán a encontrar la sintaxis exacta del método a poco que tú entienda qué quieres hacer.

septiembre 28, 2014 | Registered Commenterrickiees

@rickiees

Uso NetBeans a diario desde hace muchos años :)
Sé perfectamente que el Matisse crea un main por defecto, cada vez que se crea un JFrame.

septiembre 28, 2014 | Registered Commenterchoces

Gracias por las respuestas amigos...
Estudiare entonces programacion orientada a objetos.

Saludos y gracias nuevamente
claudiopq23

octubre 2, 2014 | Unregistered CommenterClaudiopq23

En todo caso, lo que yo quiero es que cuando se presiona el Jbutton, se ejecute la clase SSHCommandExecutor y se muestre el contenido en el JTextArea de la clase MenuExecutor.

El codigo es cierto que esta vacio pero es que es por que no se como llenarlo para que se muestre lo que quiero.

Saludos y gracias nuevamente
Claudio

octubre 2, 2014 | Unregistered CommenterClaudiopq23

Por eso te hemos dicho que tienes que estudiar programación orientada a objetos. Las clases NO se ejecutan, ni tampoco los objetos.

Siento si suena rudo, pero tú no tienes una duda que se pueda preguntar en un foro. Tienes la necesidad de estudiar mucho más de lo que has hecho hasta ahora para poder conseguir lo que pretendes. Decirte qué instrucciones tienes que poner sólo para que te funcione no te va a hacer aprender y sólo servirá para que los demás perdamos el tiempo.

Al principio de cada uno de los foros de consulta que hay aquí figura un enlace que deberíais leer:

http://www.sindominio.net/ayuda/preguntas-inteligentes.html

octubre 2, 2014 | Registered Commenterrickiees