Olá a todos!!
Sei que pode parecer estranho, um cara novo, primeira mensagem, pedindo ajuda … mas é a primeira vez estou desenvolvendo um chat e estou com um problema que não consigo resolver!!
Sei que ja tem em outros tópicos a solução, mas tentei todas as maneiras e não consegui resolver!!
O meu problema é que eu tenho que passar os dados dos JTextFields da classe JFLogin para a classe Layout_Chat!
Criei as funções getip, getnome e getporta, e tentei usar elas para atribuir os valores dos TextFields para as variávies, mas está dando erro!!
Alguém poderia me ajudar por favor??
Aqui segue o código das duas classes:
[code]package com.Chat;
import java.awt.Color;
import java.awt.event.;
import java.awt.;
import java.io.;
import java.net.Socket;
import javax.swing.;
public class JFLogin extends JFrame {
private Container c;
private JLabel lblNome;
private JTextField txtNome;
private JLabel lblIpServidor;
private JTextField txtIpServidor;
private JLabel lblPorta;
private JTextField txtPorta;
private JButton btnEntrar;
private PrintWriter saida = null;
public JFLogin() {
c = new Container();
setTitle("Login - Chat ");
setSize(350,250);
c = getContentPane();
c.setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lblNome = new JLabel("Nome:");
lblNome.setBounds(88, 30, 100, 25);
txtNome = new JTextField(10);
txtNome.setBounds(150, 30, 175, 22);
lblIpServidor = new JLabel("Ip Servidor:");
lblIpServidor.setBounds(59, 70, 100, 25);
txtIpServidor = new JTextField(10);
txtIpServidor.setBounds(150, 70, 175, 22);
lblPorta = new JLabel("Porta:");
lblPorta.setBounds(92, 110, 100, 25);
txtPorta = new JTextField("5555");
txtPorta.setBounds(150, 110, 175, 22);
btnEntrar = new JButton("Entrar");
btnEntrar.setBounds(30, 160, 300, 25);
c.add(lblNome);
c.add(txtNome);
c.add(lblIpServidor);
c.add(txtIpServidor);
c.add(lblPorta);
c.add(txtPorta);
c.add(btnEntrar);
btnEntrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(verificarcampos()==true){
dispose();
Layout_Chat lc = new Layout_Chat();
lc.setVisible(true);
}
else{
JOptionPane.showMessageDialog(null, "Verifique os campos");
}
}});
}
public String getnome(){
return txtNome.getText();
}
public String getporta(){
return txtPorta.getText();
}
public String getip(){
return txtIpServidor.getText();
}
public boolean verificarcampos(){
boolean verificar=true;
if(txtIpServidor.getText().trim().isEmpty()){
verificar=false;
}
return verificar;
}
}
[/code]
[code]package com.Chat;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
public class Layout_Chat extends JFrame{
private Container c;
private JButton botaoenviar;
private JTextArea entrada2;
private JTextArea entrada1;
private JScrollPane scrollBar1;
private JScrollPane scrollBar2;
private JScrollPane scrollBar3;
private JLabel Usuario;
private JLabel ListaOline;
private JList conectados;
private Socket conexao;
private PrintStream saida;
private String msg;
private ArrayList listaconectados = null;
private String ipserver;
private int portaserver;
private String nomeusuario;
private JFLogin login;
BufferedReader servidor ;
public Layout_Chat(){
super("Chat");
c = getContentPane();
setResizable(false);
c.setLayout(null);
login = new JFLogin();
portaserver = Integer.parseInt(login.getporta());///////////////////<<<-----------------------------
ipserver = login.getip();///////////////////<<<--------------------------------
listaconectados = new ArrayList<String>();
try {
String mensagem;
conexao = new Socket(ipserver, portaserver);
//Instancia do atributo saida, obtem os objetos que permitem controlar o fluxo de comunicação
saida = new PrintStream(conexao.getOutputStream());
servidor = new BufferedReader(new InputStreamReader(conexao.getInputStream()));
nomeusuario = login.getnome(); //////////////////////<<<------------------
if(nomeusuario==null){
JOptionPane.showMessageDialog(null,"*Erro* Nenhum nome foi digitado!");
System.exit(0);
}
//envia o nome digitado para o servidor
saida.println(nomeusuario.toUpperCase());//toUppercase ignora case sensitive
mensagem = servidor.readLine();
System.out.println(mensagem);
if(mensagem.equals("nomeexistente")){
JOptionPane.showMessageDialog(null, "O nome já está em uso");
System.exit(0);
}
JOptionPane.showMessageDialog(null, mensagem);
String strloop = servidor.readLine();
System.out.println(strloop);
int loopadd = Integer.parseInt(strloop);
System.out.println("Tem " + loopadd + " conectados");
for(int i=0; i<loopadd ; i++){
String nomeuseradd = servidor.readLine();
System.out.println("Online " + nomeuseradd);
listaconectados.add(nomeuseradd);
}
conectados = new JList();
c.add(conectados);
conectados.setListData(listaconectados.toArray());
Usuario = new JLabel("Usuário: "+nomeusuario);
Usuario.setBounds(50,5,150,30);
c.add(Usuario);
ListaOline = new JLabel("ListaConectados");
ListaOline.setBounds(800,20,150,30);
c.add(ListaOline);
//instancia a thread para ip e porta conectados e depois inicia ela
Thread thread = new Thread(new Auxiliar());
thread.start();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Não foi possível efetuar a conexão");
e.printStackTrace();
}
botaoenviar = new JButton("Enviar");
botaoenviar.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
try{
msg = entrada2.getText();
saida.println(nomeusuario + " diz : " +msg);
saida.flush();
entrada2.setText("");
entrada2.grabFocus();
}
catch(Exception e){
}
}
});
entrada1 = new JTextArea();
entrada1.setLineWrap(true);
entrada1.setWrapStyleWord(true);
entrada2 = new JTextArea();
entrada2.setLineWrap(true);
entrada2.setWrapStyleWord(true);
scrollBar1 = new JScrollPane(entrada1);
scrollBar1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollBar1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollBar1.setBounds(50,30,700,300);
entrada1.setEditable(false);
c.add(scrollBar1);
scrollBar2 = new JScrollPane(entrada2);
scrollBar2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollBar2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollBar2.setBounds(150,350,500,150);
c.add(scrollBar2);
scrollBar3 = new JScrollPane(conectados);
scrollBar3.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollBar3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollBar3.setBounds(800,50,150,200);
c.add(scrollBar3);
botaoenviar.setBounds(650,350,100,100);
c.add(botaoenviar);
setSize(1000,600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class Auxiliar implements Runnable{
@Override
public void run() {
try{
String mensagem;
try{
Thread.sleep(1500);
}
catch(Exception e){
}
while(true){
mensagem = servidor.readLine();
String msg[] = mensagem.split("MPMP@@");
if(msg[0].equals("addListListList")||msg[0].equals("remListListList")){
if(msg[0].equals("addListListList")){
boolean confere = true;
for(int i = 0 ; i < listaconectados.size() ; i ++){
if(listaconectados.get(i).equals(msg[1])){
confere = false;
}
}
if(confere==true){
listaconectados.add(msg[1]);
entrada1.append("O usuário "+ msg[1] + " entrou \n");
}
conectados.setListData(listaconectados.toArray());
}
else{
listaconectados.remove(msg[1]);
conectados.setListData(listaconectados.toArray());
entrada1.append("O usuário "+msg[1]+" Saiu \n");
}}
else{
entrada1.append(mensagem + "\n");
entrada1.setCaretPosition(entrada1.getText().length());
}
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Ocorreu algum erro e o programa será encerrado ");
}
}}}[/code]