Foro sobre Java SE > Acceder a un elemento de otra clase
Depende a que tipo de clase quieras acceder, si es jFrame, JinternaFrame, pon mas codigo y miramos como es que quieres acceder de una clase a la otra.
Te copio todo el código fuente:
------------------------------------
public class Principal_chat {
public static void main(String[] args) {
Gran_hilo1 hilo1=new Gran_hilo1();
hilo1.start();
Cliente cliente_aux1=new Cliente("Cliente");
Cliente cliente_aux2=new Cliente("Servidor");
}
}
-----------------------------------
public class Gran_hilo1 extends Thread {
public void run() {
Servidor servidor_aux=new Servidor();
}
}
-----------------------------------
public class Servidor {
// Constructor
public Servidor() {
try {
ServerSocket serverSocket = new ServerSocket(1234);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine = in.readLine();
String outputLine="";
boolean salir=false;
while (!salir) {
if (inputLine.equals("Hola Don Pepito")) { outputLine="Hola Don José"; }
if (inputLine.equals("¿Pasó usted por mi casa?")) { outputLine="Por su casa yo pasé"; }
if (inputLine.equals("¿Vió usted a mi abuela?")) { outputLine="A su abuela yo la vi"; }
if (inputLine.equals("Adiós Don Pepito")) { outputLine="Adiós Don José"; }
out.println(outputLine);
inputLine=in.readLine();
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
catch(IOException ex) { }
}
}
---------------------------------------------------------------
public class Cliente extends JFrame implements ActionListener, KeyListener {
JTextField tf_aux;
JTextArea ta_aux;
Socket clientSocket;
PrintWriter out;
BufferedReader in;
//Constructor
public Cliente(String nom_ventana) {
this.addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent ev) {
System.exit(0);
}
}
);
try {
clientSocket=new Socket("192.168.0.101",1234);
out=new PrintWriter(clientSocket.getOutputStream(),true);
in=new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
}
catch (IOException e) { }
this.setLayout(null);
this.setSize(500,300);
this.setTitle(nom_ventana);
/* Principio código a cambiar */
ta_aux=new JTextArea();
ta_aux.setBounds(0,0,500,200);
ta_aux.setName("ta_aux");
ta_aux.setVisible(true);
this.add(ta_aux);
tf_aux=new JTextField();
tf_aux.setBounds(10,230,350,20);
tf_aux.setName("tf_aux");
ta_aux.setVisible(true);
this.add(tf_aux);
JButton bt_enviar=new JButton();
bt_enviar.setBounds(380,230,100,20);
bt_enviar.setName("bt_enviar");
bt_enviar.setText("Enviar");
bt_enviar.setVisible(true);
bt_enviar.addActionListener(this);
this.add(bt_enviar);
this.setVisible(true);
/* Fin código a cambiar */
}
public Dimension preferredSize() {
return new Dimension(500,300);
}
public String iniciar_cliente(String q_mensaje) {
String Estring="";
try {
System.out.println("Enviando el mensaje:"+q_mensaje);
out.println(q_mensaje);
Estring=in.readLine();
}
catch (UnknownHostException e) { }
catch (IOException e) { }
return(Estring);
}
public void mandar_mensaje() {
ta_aux.append(tf_aux.getText());
ta_aux.append("\n");
// System.out.println("SUPER:"+super.getClass().getName());
String respuesta=iniciar_cliente(tf_aux.getText());
ta_aux.append(respuesta);
ta_aux.append("\n");
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent arg0) {
Object control = arg0.getSource();
if (control instanceof JButton) {
if (((JButton) control).getName().equals("bt_enviar")) {
mandar_mensaje();
}
}
}
}
------------------------------------------------
Ahí lo tienes todo, como ya dije antes solo quiero que todo lo que se escriba en un textarea salga también al mismo tiempo en el otro.
Muchas gracias por todo
Me suena este ejercicio... ¿aula mentor?
Hola:
¿Cómo podría acceder al elemento de otra clase?
Por ejemplo tengo una clase con este código:
Cliente cliente_aux1=new Cliente("Cliente");
Cliente cliente_aux2=new Cliente("Servidor");
Y dentro de la clase Cliente tengo un campo TextArea llamado ta_aux. En un determinado momento llamo a esta función:
funcion void escribir() {
ta_aux.append("Pepe");
}
Y sí, me escribe perfectamente Pepe en ese textarea, pero yo quiero que al mismo tiempo me lo escriba en el otro textarea de la otra instancia Cliente creada, es decir, algo así como que pudiera escribir:
super.cliente_aux2.ta_aux.append("Pepe");
Mi objetivo es que todo lo que se escriba en un textarea se clone en el otro.
Gracias