Obrigado Amigos,
Apresento a minha solução para os leitores:
Uma classe de teste (Swing):
public class teste extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JScrollPane jScrollPane = null;
private JTextArea jTextArea = null;
/**
* This is the default constructor
*/
public teste() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
jContentPane.add(getJScrollPane(), BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jScrollPane
*
* @return javax.swing.JScrollPane
*/
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane();
jScrollPane.setViewportView(getJTextArea());
}
return jScrollPane;
}
/**
* This method initializes jTextArea
*
* @return javax.swing.JTextArea
*/
private JTextArea getJTextArea() {
if (jTextArea == null) {
jTextArea = new JTextArea();
}
return jTextArea;
}
public void addLogArea (String msg) {
jTextArea.append(msg);
jTextArea.updateUI();
}
}
Extendida por outra classe de teste(teste2) p/ execução execução:
[]
public class teste2 extends teste{
private static final int SERVER_TRANSFER_PORT = 41000;
private static final String SERVER_TRANSFER_HOST = "xxxxxx.yyyyy.com"; // @jve:decl-index=0:
private static final int SERVER_PORT = 40000;
private static final int SERVER_TIMEOUT = 600000;
private static final String SERVER_HOST = "xxxx.yyyyy.com";
private static final String EOT = "EOT";
public static teste appGui = null;
public static void echoMessage(String msg){
System.out.println(new Date()+" [ "+msg+" ]" + "\n");
appGui.addLogArea(msg+ "\n");
}
private static final long serialVersionUID = 1L;
public static TransferProjectSerializable transferencia (TransferProjectSerializable transfer) {
String address = SERVER_TRANSFER_HOST;
int porta = SERVER_TRANSFER_PORT;
ObjectInputStream entrada = null;
ObjectOutputStream saida = null;
Socket cliente = null;
echoMessage("Conectando ao servidor ...");
try {
cliente = new Socket(address,porta);
cliente.setSoTimeout(SERVER_TIMEOUT);
echoMessage("Conexao aceita de: "+cliente.getInetAddress().toString());
echoMessage("Obtendo canal de saida");
saida = new ObjectOutputStream(cliente.getOutputStream());
saida.flush();
saida.writeObject(transfer);
echoMessage("Obtendo canal de entrada");
entrada = new ObjectInputStream(cliente.getInputStream());
String msg = null;
do {
msg = (String) entrada.readObject();
echoMessage(msg);
}while(!msg.equals(EOT));
transfer = (TransferProjectSerializable) entrada.readObject();
echoMessage("RCV: "+ transfer.getResult());
} catch (Exception e) {
echoMessage("Erro: "+e);
echoMessage("Navegador não disponível: " + transfer.getResult() + ".Informe ao DesenvSuporte");
System.exit(0);
} finally{
try {
if (entrada != null) entrada.close();
if (saida!=null) saida.close();
if (cliente != null) {
echoMessage("Encerrando a conexao");
cliente.close();
cliente = null;
echoMessage("Conexao encerrada");
return transfer;
}
} catch (IOException e1) {
echoMessage("Erro ao encerrar a conexao - "+e1);
}
return transfer;
}
}
public static void main(String[] args) {
TransferProjectSerializable transfer = new TransferProjectSerializable();
appGui = new teste();
appGui.setVisible(true);
transfer.setComando("teste");
transferencia(transfer);
}
}
[]
Simplifiquei a interface e o “log” foi bem apresentado. A atualização funcion bem.
Uma pergunta a mais, se possível.
Existe alguma maneira eficiente de executar o scroll do JTextArea? Eventos?
Um abraço,
FCorrea