La accion no ocurre al presionar el Jbutton si no al presionar un JComobBox
Publicado por Jaime (4 intervenciones) el 26/02/2024 20:25:10
Hola, ante todo pedir disculpas por los fallos que pueda cometer, es la primera vez que participo en un foro.
Despues, agradecer de antemano la ayuda que me deis.
Tego un codigo con un Actionlistenr asociado a u JButon, pero la acción no se jecutacompletamente al presionar el JButton si no al presionar, despues en un JComboBox de que tiene que tomar el SelectItem para hacer la accion.
Si alguien pudiera decirme que estoy haciendo mal.
Todo es llamado desde la lamina
El desplegable se rellena con el siguiente codigo
Por favor corregir los fallos que haya cometido al hacer la pregunta sin tomarmelo en cuenta.
Despues, agradecer de antemano la ayuda que me deis.
Tego un codigo con un Actionlistenr asociado a u JButon, pero la acción no se jecutacompletamente al presionar el JButton si no al presionar, despues en un JComboBox de que tiene que tomar el SelectItem para hacer la accion.
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
package controlador;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import modelo.Conexion;
import vista.*;
public class ListarTabla implements ActionListener {
Conexion miConexion = new Conexion();
public void actionPerformed(ActionEvent e) {
Connection conecta = miConexion.dameConexion(); // INSTANCIAMOS EL METODO DE DENTRO DE CONEXION QUE NOS DA LA CONEXION
try {
Statement miStatement = conecta.createStatement(); //CREAMOS EL STATEMENT
ResultSet rs = miStatement.executeQuery("SELECT * FROM " + LaminaDDBB.Desplegable.getSelectedItem()); // CREAMOS EL RESULTSET
//LlenarTabla.LlenarNombresColumnas(rs);
// Crear el modelo de la tabla
DefaultTableModel model = new DefaultTableModel();
try { // Recorrer el ResultSet y añadir los datos al modelo
ResultSetMetaData rsmd = rs.getMetaData();// Obtener los metadatos del ResultSet
int columnCount = rsmd.getColumnCount();// Obtener el número de columnas
String[] columnNames = new String[columnCount];// Crear un array para los nombres de las columnas
for (int i = 0; i < columnCount; i++) { // Rellenar el array con los nombres de las columnas
columnNames[i] = rsmd.getColumnName(i + 1);
}
model.setColumnIdentifiers(columnNames);// Añadir el array con los nombres de las columnas al modelo como cabecera
Object[] rowData = new Object[columnCount];// Crear un array para los valores de las filas
while (rs.next()) { // Recorrer el ResultSet
for (int i = 0; i < columnCount; i++) { // Rellenar el array con los valores de las columnas
rowData[i] = rs.getObject(i + 1);
}
model.addRow(rowData);// Añadir el array al modelo como nueva fila
}
} catch (SQLException e1) {
e1.printStackTrace();
}
if (LLeno) {
MarcoBBDD.miLamina.remove(scrollPane); // Eliminamos la tabla solo si existe
System.out.println("boramso scroll");
}
JTable table = new JTable(model);// Crear la tabla con el modelo
scrollPane = new JScrollPane(table);// Crear el scroll pane con la tabla
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);// ELEJIMOS CUANDO APARECE EL SCROLL
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
MarcoBBDD.miLamina.add(scrollPane, BorderLayout.CENTER);
LLeno = true;
} catch (Exception e1) {
// TODO Auto-generated catch block
System.out.println("Fallo");
}
}
JScrollPane scrollPane;
Boolean LLeno = false;
}
Si alguien pudiera decirme que estoy haciendo mal.
Todo es llamado desde la lamina
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
package vista;
import modelo.*;
import controlador.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.*;
public class LaminaDDBB extends JPanel {
public LaminaDDBB () {
setLayout(new BorderLayout());
Desplegable = new JComboBox();
Blistar = new JButton("Listar");
JPanel LaminaMenu = new JPanel();
LaminaMenu.setLayout(new FlowLayout());
ListarTabla ListarT = new ListarTabla(); // INSTANCIAMOS EL METODO QUE LE DA LA ACCION AL BOTON
Blistar.addActionListener(ListarT); //AL BOTON LE DAMOS SU ACCION
Desplegable.setPreferredSize(new Dimension(220,30));
Blistar.setPreferredSize(new Dimension(100,30));
RellenaDesplegable.Rellena(); //LLAMAMOS AL METODO QUE NOS RELLENA EL DESPLEGABLE
LaminaMenu.add(Desplegable);
LaminaMenu.add(Blistar);
add(LaminaMenu, BorderLayout.NORTH);
}
static public JComboBox Desplegable;
static public JButton Blistar;
}
El desplegable se rellena con el siguiente codigo
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
package modelo;
import java.sql.*;
import controlador.CapturaConexion;
import vista.*;
public class RellenaDesplegable {
public static void Rellena() {
miConexion = new Conexion(); //INSTANCIAMOS EL METODO DE LA CONEXION
Connection accesoBBDD = miConexion.dameConexion(); // INSTANCIAMOS EL METODO DE DENTRO DE CONEXION QUE NOS DA LA CONEXION
try {
DatabaseMetaData datosBBDD = accesoBBDD.getMetaData(); // METEMOS EN datosBBDD LOS METADATOS DE LA BASE DE DATOS
miResulset = datosBBDD.getTables(CapturaConexion.nombreBBDD, null, null, null); // CREAMOS LA TABLA VIRTUAL "RESULTSET" CON LAS TABLAS DE LA BBDD
while ( miResulset.next()) { // RECORREMOS EL RESULTSET
LaminaDDBB.Desplegable.addItem(miResulset.getString("TABLE_NAME")); // METEMOS EN EL DESPLEGABLE TODAS LAS TABLAS
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
static Conexion miConexion;
public static ResultSet miResulset;
}
Por favor corregir los fallos que haya cometido al hacer la pregunta sin tomarmelo en cuenta.
Valora esta pregunta
0