Ayuda con rmi y mvc!

Iniciado por Ruusa, 9 Marzo 2021, 17:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Ruusa

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:

Código (java) [Seleccionar]
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
public void agregarJugador (String nombre) throws RemoteException {
jugadores.add(new Jugador(nombre));
notificarObservadores(2);
}





Código (java) [Seleccionar]
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;

}

public void agregarJugador(String nombre) throws RemoteException {
miJuego.agregarJugador(nombre);
}

public void actualizar(IObservableRemoto modelo, Object queCambio) throws RemoteException{
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;


}
}





Código (java) [Seleccionar]
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 JPanel contentPane;
private JTextField txtAgregarJugador;
private JButton boton1;
private JButton boton2;
private static JPanel panel;
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;
private static JFrame frame;






public void menu() throws RemoteException{
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(400, 50, 700, 500);
frame.setTitle("Escoba de 15");
frame.setLayout(null);
JPanel contentPane = new JPanel();
contentPane.setBounds(0,0,700,500);
contentPane.setBackground(Color.black);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setVisible(true);

frame.getContentPane().add(contentPane);



panel = new JPanel();
panel.setBounds(0,0,700, 500);
panel.setBackground(Color.LIGHT_GRAY);
panel.setBorder(new EmptyBorder(5, 5, 5, 5));


panel2 = new JPanel();
panel2.setBounds(0,0,700,500);
panel2.setBackground(Color.pink);
panel2.setBorder(new EmptyBorder(5, 5, 5, 5));



JTextField txtAgregarJugador = new JTextField();
txtAgregarJugador.setBounds(250, 200, 179, 33);
txtAgregarJugador.setHorizontalAlignment(SwingConstants.CENTER);
txtAgregarJugador.setBackground(new Color(192, 192, 192));
txtAgregarJugador.setText("Nombre jugador");
txtAgregarJugador.setColumns(10);


JButton boton1 = new JButton("Agregar jugador");
boton1.setBackground(new Color(218, 112, 214));
boton1.setBounds(new Rectangle(250, 250, 179, 31));
contentPane.setLayout(null);
contentPane.add(txtAgregarJugador);
contentPane.add(boton1);
boton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
miControl.agregarJugador(txtAgregarJugador.getText());
} catch (RemoteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}



});


frame.setVisible(true);



}

public void jugadorAgregado() throws RemoteException {
JOptionPane.showMessageDialog(null, "Jugador agregado con exito");
};

@Override
public void setControlador(ControladorJuego controlador) {
this.miControl = controlador;

};

public void iniciar() throws RemoteException {
menu();
}
}





Código (java) [Seleccionar]
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 {

public static void main(String[] args) throws RemoteException {
ArrayList<String> ips = Util.getIpDisponibles();
String ip = (String) JOptionPane.showInputDialog(
null,
"Seleccione la IP en la que escuchará peticiones el servidor", "IP del servidor",
JOptionPane.QUESTION_MESSAGE,
null,
ips.toArray(),
null
);
String port = (String) JOptionPane.showInputDialog(
null,
"Seleccione el puerto en el que escuchará peticiones el servidor", "Puerto del servidor",
JOptionPane.QUESTION_MESSAGE,
null,
null,
8888
);

Juego modelo = new Juego();
Servidor servidor = new Servidor(ip, Integer.parseInt(port));
try {
servidor.iniciar(modelo);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}





Código (java) [Seleccionar]
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;

public static void main(String[] args) throws RemoteException {
ArrayList<String> ips = Util.getIpDisponibles();;
String ip = (String) JOptionPane.showInputDialog(
null,
"Seleccione la IP en la que escuchará peticiones el cliente", "IP del cliente",
JOptionPane.QUESTION_MESSAGE,
null,
ips.toArray(),
null
);
String port = (String) JOptionPane.showInputDialog(
null,
"Seleccione el puerto en el que escuchará peticiones el cliente", "Puerto del cliente",
JOptionPane.QUESTION_MESSAGE,
null,
null,
9999
);
String ipServidor = (String) JOptionPane.showInputDialog(
null,
"Seleccione la IP en la corre el servidor", "IP del servidor",
JOptionPane.QUESTION_MESSAGE,
null,
null,
null
);
String portServidor = (String) JOptionPane.showInputDialog(
null,
"Seleccione el puerto en el que corre el servidor", "Puerto del servidor",
JOptionPane.QUESTION_MESSAGE,
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);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RMIMVCException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


MOD: Agregadas etiquetas GeSHi.