Hola! buen dia! Estoy haciendo un juego y tengo problemas al implementar RMI. Cuando quiero agregar un jugador a traves del boton 1,(clase vistaGrafica) me muestra el Showmessagedialog sin texto y se congela todo. Nose que estoy haciendo mal, Si alguien me puede ayudar se lo agradeceria. Este es el codigo:
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.rmi.Remote;
import Cartas.Cartas;
import Cartas.Mazo;
import Cartas.Palos;
import Modelo.Jugador;
import ar.edu.unlu.rmimvc.observer.ObservableRemoto;
public class Juego extends ObservableRemoto implements IJuego{
public ArrayList<Jugador> jugadores = new ArrayList<>();
public Juego() {
}
@Override
jugadores.add(new Jugador(nombre));
notificarObservadores(2);
}
package Controlador;
import java.rmi.RemoteException;
import Modelo.IJuego;
import Modelo.Juego;
import Modelo.Jugador;
import Vista.ControlVista;
import Vista.VistaGrafica;
import ar.edu.unlu.rmimvc.cliente.IControladorRemoto;
import ar.edu.unlu.rmimvc.observer.IObservableRemoto;
public class ControladorJuego implements IControladorRemoto {
private static IJuego miJuego;
private ControlVista miVista;
public ControladorJuego(ControlVista miVista) {
this.miVista = miVista;
}
miJuego.agregarJugador(nombre);
}
int cambio = (int) queCambio;
switch (cambio) {
case 1:
miVista.menu();
break;
case 2:
this.miVista.jugadorAgregado();
break;
}
}
@Override
public <T
extends IObservableRemoto
> void setModeloRemoto
(T modeloRemoto
) throws RemoteException { this.miJuego = (IJuego) modeloRemoto;
}
}
package Vista;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import Controlador.ControladorJuego;
import Modelo.Juego;
import Modelo.Jugador;
public class VistaGrafica
extends JFrame implements ControlVista
{
private static ControladorJuego miControl;
private static Juego miJuego;
private static int indice=0;
private static int indice2=0;
private static int r=0;
private static int r2=0;
frame.
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);frame.setBounds(400, 50, 700, 500);
frame.setTitle("Escoba de 15");
frame.setLayout(null);
contentPane.setBounds(0,0,700,500);
contentPane.
setBackground(Color.
black);contentPane.setVisible(true);
frame.getContentPane().add(contentPane);
panel.setBounds(0,0,700, 500);
panel.
setBackground(Color.
LIGHT_GRAY);
panel2.setBounds(0,0,700,500);
panel2.
setBackground(Color.
pink);
txtAgregarJugador.setBounds(250, 200, 179, 33);
txtAgregarJugador.
setBackground(new Color(192,
192,
192));txtAgregarJugador.setText("Nombre jugador");
txtAgregarJugador.setColumns(10);
boton1.
setBackground(new Color(218,
112,
214));boton1.
setBounds(new Rectangle(250,
250,
179,
31));contentPane.setLayout(null);
contentPane.add(txtAgregarJugador);
contentPane.add(boton1);
try {
miControl.agregarJugador(txtAgregarJugador.getText());
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
frame.setVisible(true);
}
JOptionPane.
showMessageDialog(null,
"Jugador agregado con exito"); };
@Override
public void setControlador(ControladorJuego controlador) {
this.miControl = controlador;
};
menu();
}
}
import java.rmi.RemoteException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import Modelo.Juego;
import ar.edu.unlu.rmimvc.RMIMVCException;
import ar.edu.unlu.rmimvc.Util;
import ar.edu.unlu.rmimvc.servidor.Servidor;
public class AppServidor {
ArrayList
<String
> ips
= Util.
getIpDisponibles();null,
"Seleccione la IP en la que escuchará peticiones el servidor", "IP del servidor",
null,
ips.toArray(),
null
);
null,
"Seleccione el puerto en el que escuchará peticiones el servidor", "Puerto del servidor",
null,
null,
8888
);
Juego modelo = new Juego();
Servidor servidor
= new Servidor
(ip,
Integer.
parseInt(port
));try {
servidor.iniciar(modelo);
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.util.ArrayList;
import java.rmi.RemoteException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import Controlador.ControladorJuego;
import Vista.ControlVista;
import Vista.VistaGrafica;
import ar.edu.unlu.rmimvc.RMIMVCException;
import ar.edu.unlu.rmimvc.cliente.Cliente;
import ar.edu.unlu.rmimvc.Util;
import Modelo.IJuego;
import Modelo.Juego;
//import cliente.Cliente;
public class AppCliente {
public static IJuego miJuego;
ArrayList
<String
> ips
= Util.
getIpDisponibles();;null,
"Seleccione la IP en la que escuchará peticiones el cliente", "IP del cliente",
null,
ips.toArray(),
null
);
null,
"Seleccione el puerto en el que escuchará peticiones el cliente", "Puerto del cliente",
null,
null,
9999
);
null,
"Seleccione la IP en la corre el servidor", "IP del servidor",
null,
null,
null
);
null,
"Seleccione el puerto en el que corre el servidor", "Puerto del servidor",
null,
null,
8888
);
ControlVista vista = new VistaGrafica();
ControladorJuego controlador = new ControladorJuego(vista);
Cliente c
= new Cliente
(ip,
Integer.
parseInt(port
), ipServidor,
Integer.
parseInt(portServidor
));vista.setControlador(controlador);
vista.iniciar();
try {
c.iniciar(controlador);
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
MOD: Agregadas etiquetas GeSHi.