1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package es.mde.componentes;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import es.mde.entidades.Federado;
import es.mde.entidades.Jugador;
import es.mde.entidades.Principiante;
import es.mde.repositorios.JugadorDAO;
public class VistaJugadorModal extends JDialog {
private Jugador jugador;
private List<Jugador> jugadoresSimilares;
private JPanel infoPanel;
private JPanel similarPlayersPanel;
public VistaJugadorModal(JFrame parent, Jugador jugador) {
super(parent, "Ver Jugador", true);
this.jugador = jugador;
setLayout(new BorderLayout());
// Panel principal con BoxLayout para evitar grandes espacios vacíos
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));
// Panel de información del jugador
infoPanel = new JPanel();
infoPanel.setLayout(new BoxLayout(infoPanel, BoxLayout.Y_AXIS));
infoPanel.setBorder(BorderFactory.createEmptyBorder(10, 100, 10, 100)); // Márgenes: arriba, izquierda, abajo, derecha
// Mostrar información del jugador
infoPanel.add(new JLabel("Nombre: " + jugador.getNombre() + " " + jugador.getApellido1() + " " + jugador.getApellido2()));
infoPanel.add(new JLabel("DNI: " + jugador.getDni()));
infoPanel.add(new JLabel("Teléfono: " + jugador.getTelefono()));
infoPanel.add(new JLabel("Correo Electrónico: " + jugador.getEmail()));
infoPanel.add(new JLabel("Campo: " + jugador.getCampo().getNombre()));
if (jugador.getTipo().equals("Federado")) {
infoPanel.add(new JLabel("Handicap: " + ((Federado) jugador).getHandicap()));
if (((Federado) jugador).isProfesional()) {
infoPanel.add(new JLabel("Profesional: Sí"));
}
} else if (jugador.getTipo().equals("Principiante")) {
infoPanel.add(new JLabel("Puntuación Largo: " + ((Principiante) jugador).getPuntuacionLargo()));
infoPanel.add(new JLabel("Puntuación Corto: " + ((Principiante) jugador).getPuntuacionCorto()));
}
mainPanel.add(infoPanel);
// Panel de jugadores similares
similarPlayersPanel = new JPanel(new BorderLayout());
// Crear el modelo de la tabla para los jugadores similares
DefaultTableModel tableModel = new DefaultTableModel();
tableModel.addColumn("Nombre");
tableModel.addColumn("Handicap");
// Cargar jugadores similares en el modelo de la tabla
jugadoresSimilares = new JugadorDAO().getSimilares(jugador);
for (Jugador similar : jugadoresSimilares) {
String nombreCompleto = similar.getNombre() + " " + similar.getApellido1() + " " + similar.getApellido2();
String handicap = String.valueOf(similar.getTipo().equals("Federado") ? ((Federado) similar).getHandicap() : ((Principiante) similar).getHandicap());
tableModel.addRow(new Object[]{nombreCompleto, handicap});
}
// Crear la tabla con el modelo de datos
JTable similarPlayersTable = new JTable(tableModel);
// Asegurar que las celdas de la tabla tengan un fondo blanco
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setBackground(Color.WHITE);
similarPlayersTable.setDefaultRenderer(Object.class, renderer);
// Añadir la tabla al panel de jugadores similares
JScrollPane scrollPane = new JScrollPane(similarPlayersTable);
scrollPane.setBorder(BorderFactory.createTitledBorder("Jugadores de Nivel Similar"));
similarPlayersPanel.add(scrollPane, BorderLayout.CENTER);
mainPanel.add(similarPlayersPanel);
add(mainPanel, BorderLayout.CENTER);
JButton closeButton = new JButton("Cerrar");
closeButton.addActionListener(e -> dispose());
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttonPanel.add(closeButton);
add(buttonPanel, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(parent);
}
private void cargarJugadoresSimilares() {
jugadoresSimilares = new JugadorDAO().getSimilares(jugador);
for (Jugador similar : jugadoresSimilares) {
System.out.println(similar.getNombre() + ", " + similar.getTipo());
JPanel jugadorPanel = new JPanel();
jugadorPanel.setLayout(new BoxLayout(jugadorPanel, BoxLayout.Y_AXIS));
jugadorPanel.add(new JLabel("Nombre: " + similar.getNombre() + " " + similar.getApellido1() + " " + similar.getApellido2()));
jugadorPanel.add(new JLabel("Handicap: " + (similar.getTipo().equals("Federado") ? ((Federado) similar).getHandicap() : ((Principiante) similar).getHandicap())));
similarPlayersPanel.add(jugadorPanel);
}
similarPlayersPanel.revalidate();
similarPlayersPanel.repaint();
}
}