Olá a todos, a minha dúvida é a seguinte, porque não consigo passar os dados da classe Login para a classe ConnectServer usando set()??
Segue o código abaixo:
/*
* Login.java
*
* Created on October 01, 2006, 8:55 AM
*
* Classe responsável em verificar se o usuário e senha digitados
* são verdadeiros ou não, dando acesso ao sistema Shell
*/
package cliente;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
/**
* @author Fábio Curtis Volpe
*/
public class Login extends JFrame {
public Login() {
super("Shell -> Login");
initComponents();
}
private void initComponents() {
login = new JFrame();
lTitulo = new JLabel();
userName = new JTextField();
lUserName = new JLabel();
lPassWord = new JLabel();
conectar = new JButton();
sair = new JButton();
passWord = new JPasswordField();
progressBar = new JProgressBar();
//======== login ========
{
Container loginContentPane = login.getContentPane();
loginContentPane.setLayout(null);
//---- lTitulo ----
lTitulo.setText("Welcome to Shell");
lTitulo.setFont(new Font("Century Gothic", Font.BOLD, 26));
lTitulo.setForeground(Color.blue);
lTitulo.setBounds(new Rectangle(new Point(50, 25), lTitulo.getPreferredSize()));
add(lTitulo);
//---- userName ----
userName.setColumns(20);
userName.setFont(new Font("Century Gothic", Font.PLAIN, 12));
userName.setBounds(new Rectangle(new Point(105, 90), userName.getPreferredSize()));
userName.setDocument(new TamanhoCaracteres(20));
userName.requestFocus();
add(userName);
//---- lUserName ----
lUserName.setText("Username:");
lUserName.setFont(new Font("Century Gothic", Font.BOLD, 16));
lUserName.setBounds(new Rectangle(new Point(18, 90), lUserName.getPreferredSize()));
add(lUserName);
//---- lPassWord ----
lPassWord.setText("Password:");
lPassWord.setFont(new Font("Century Gothic", Font.BOLD, 16));
lPassWord.setBounds(new Rectangle(new Point(25, 120), lPassWord.getPreferredSize()));
add(lPassWord);
//---- conectar ----
conectar.setText("Conectar...");
conectar.setIcon(new ImageIcon("C:\Documents and Settings\F\u00e1bio\Desktop\Meus Projetos\Shell\icones\32x32\actions\lock.png"));
conectar.setBounds(new Rectangle(new Point(105, 175), conectar.getPreferredSize()));
add(conectar);
conectar.addActionListener (
new ActionListener() { // classe interna anônima
public void actionPerformed(ActionEvent event) {
// verifica se o campo userName está em branco
if(userName.getText().trim().equals("")){
JOptionPane.showMessageDialog(null,"Username ou Password inválido!", "Informação", JOptionPane.INFORMATION_MESSAGE);
userName.requestFocus();
return;
}
// chama o método faz o login
Conecta();
}
}
);
//---- sair ----
sair.setText("Sair");
sair.setIcon(new ImageIcon("C:\Documents and Settings\F\u00e1bio\Desktop\Meus Projetos\Shell\icones\32x32\actions\gnome-logout.png"));
sair.setBounds(new Rectangle(new Point(235, 175), sair.getPreferredSize()));
add(sair);
sair.addActionListener (
new ActionListener() { // classe interna anônima
public void actionPerformed(ActionEvent event) {
System.exit(0); // encerra o aplicativo
}
}
);
//---- passWord ----
passWord.setColumns(20);
passWord.setFont(new Font("Century Gothic", Font.PLAIN, 12));
passWord.setDocument(new TamanhoCaracteres(20));
add(passWord);
passWord.setBounds(new Rectangle(new Point(105, 120), passWord.getPreferredSize()));
loginContentPane.add(progressBar);
progressBar.setBounds(0, 240, 380, progressBar.getPreferredSize().height);
// define o valor inicial para progressBar
progressBar.setMinimum(0);
// define o valor máximo para progressBar
progressBar.setMaximum(50);
add(progressBar);
{ // compute preferred size
Dimension preferredSize = new Dimension();
for(int i = 0; i < loginContentPane.getComponentCount(); i++) {
Rectangle bounds = loginContentPane.getComponent(i).getBounds();
preferredSize.width = Math.max(bounds.x + bounds.width, preferredSize.width);
preferredSize.height = Math.max(bounds.y + bounds.height, preferredSize.height);
}
Insets insets = loginContentPane.getInsets();
preferredSize.width += insets.right;
preferredSize.height += insets.bottom;
loginContentPane.setPreferredSize(preferredSize);
}
}
}
/*
* Método responsável em fazer o login do usuário ao sistema
*/
private void Conecta() {
// instancia a classe ConnectServer
connect = new ConnectServer();
// envia mensagem
connect.setMensagemOut(userName.getText()+":"+passWord.getText());
if (connect.getMensagemIn().equals("true")) { // usuário verdadeiro
Desktop desk = new Desktop();
desk.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
desk.setSize(1024,768);
desk.setVisible(true);
try {
// fecha os canais
connect.getIn().close();
connect.getOut().close();
// fecha conexão
connect.getConexao().close();
System.out.println("Conexão encerrado com sucesso!!");
} catch (IOException e) {
e.printStackTrace();
}
}
else if (connect.getMensagemIn().equals("false")) { // usuário inválido
JOptionPane.showMessageDialog(null,"Username ou Password inválidos!", "Informação", JOptionPane.INFORMATION_MESSAGE);
userName.setText("");
passWord.setText("");
userName.requestFocus();
}
else {
}
}
// Variables declaration
private JFrame login;
private JLabel lTitulo;
private JTextField userName;
private JLabel lUserName;
private JLabel lPassWord;
private JButton conectar;
private JButton sair;
private JPasswordField passWord;
private JProgressBar progressBar;
private ConnectServer connect;
}
/*
* ConnectServer.java
*
* Created on October 03, 2006, 8:53 AM
*
* Classe responsável em conectar ao servidor
*/
package cliente;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.swing.JOptionPane;
/**
* @author Fábio Curtis Volpe
*/
public class ConnectServer {
protected ConnectServer() {
try {
System.out.println("Mensagem:" + getMensagemOut());
// realiza a conexão no servidor e na porta
setConexao(new Socket("10.9.61.26", 4242));
// cria um canal para receber dados
DataInputStream in = new DataInputStream(getConexao().getInputStream());
// cria um canal para enviar dados
DataOutputStream out = new DataOutputStream(getConexao().getOutputStream());
// envia mensagem do tipo String
out.writeUTF(getMensagemOut());
// aguardo resposta do servidor do tipo String
setMensagemIn(in.readUTF());
} catch (IOException Ex) { //não consegui conectar
JOptionPane.showMessageDialog(null,"Não é possível conectar ao servidor!", "Informação", JOptionPane.INFORMATION_MESSAGE);
}
}
protected void setConexao(Socket conexao) {
this.conexao = conexao;
}
protected Socket getConexao() {
return conexao;
}
protected void setMensagemIn(String mensagemIn) {
this.mensagemIn = mensagemIn;
}
protected String getMensagemIn() {
return mensagemIn;
}
protected void setMensagemOut(String mensagemOut) {
this.mensagemOut = mensagemOut;
}
protected String getMensagemOut() {
return mensagemOut;
}
protected void setIn(DataInputStream in) {
this.in = in;
}
protected DataInputStream getIn() {
return in;
}
protected void setOut(DataOutputStream out) {
this.out = out;
}
protected DataOutputStream getOut() {
return out;
}
// Variables declaration
private Socket conexao;
private DataInputStream in;
private DataOutputStream out;
private String mensagemIn = "";
private String mensagemOut = "";
}
O problema está quando envia a mensagem, connect.setMensagemOut(userName.getText()+":"+passWord.getText());,
e na classe ConnectServer não “seta” a variável mensagemOut, porque?
Muito Obrigado, Fábio