
JComboBox
Publicado por Felipe (7 intervenciones) el 26/11/2016 06:23:28
Algo en sabe como cargar un JComboBox dependiente de otro.. Cuando los JComboBox son cargados de un fichero de tipo objeto.
Valora esta pregunta


0
public class Alumno implements Serializable{
private int codigo;
private String Nombre;
.....
}
public class Materia implements Serializable{
private int codigo;
private int materia ;
}
public class Horarios implements Serializable{
private int codigo;
private Alumno alumno;
private Materia materia;
private String horarios;
}
public class Conexion {
public Connection conexionMySql() {
Connection connection = null;
String url = "jdbc:mysql://localhost/sistema?autoReconnect=true&useSSL=false";
String usuario = "root";
String password = "";
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(url, usuario, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}
public class Consultas {
public List<Rol> consultarRoles() {
Connection conn = new Conexion().conexionMySql();
List<Rol> listaRoles = new ArrayList<Rol>();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = conn.prepareStatement("SELECT * FROM rol ORDER BY rolName");
rs = stmt.executeQuery();
while(rs.next()){
Rol rol = new Rol(rs.getInt("rolId"), rs.getString("rolName"), rs.getString("rolDesc"));
listaRoles.add(rol);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return listaRoles;
}
public List<String> consultarUsuarioByRol(String rol) {
Connection conn = new Conexion().conexionMySql();
List<String> listaUsuarios = new ArrayList<String>();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = conn.prepareStatement("SELECT u.usuarioName AS usuario " +
"FROM rol r " +
"INNER JOIN usuario_rol ur ON r.rolId = ur.rolId " +
"INNER JOIN usuario u ON ur.usuarioId = u.usuarioId " +
"WHERE r.rolname = ?");
stmt.setString(1, rol);
rs = stmt.executeQuery();
while(rs.next()){
listaUsuarios.add(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return listaUsuarios;
}
}
public class LlenarCombo extends JFrame implements ActionListener {
private static final long serialVersionUID = -1313013814439124473L;
private JComboBox cboRoles, cboUsuarios;
public LlenarCombo() {
super("Combos dependientes.");
setSize(350, 90);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
cargarComponentes();
}
public void cargarComponentes() {
cboRoles = new JComboBox();
cboRoles.addItem("Seleccione");
llenarComboRoles();
cboRoles.addActionListener(this);
cboUsuarios = new JComboBox();
cboUsuarios.addItem("Seleccione");
Container container = getContentPane();
container.setLayout(new GridLayout(2,2,10,10));
container.add(new JLabel("Rol:"));
container.add(cboRoles);
container.add(new JLabel("Usuario:"));
container.add(cboUsuarios);
}
public void actionPerformed(ActionEvent e) {
if(cboRoles.getSelectedItem().equals("Seleccione")) {
cboUsuarios.removeAllItems();
cboUsuarios.addItem("Seleccione");
} else {
llenarComboUsuarios(cboRoles.getSelectedItem().toString());
}
}
private void llenarComboRoles() {
List<Rol> listaRoles = new Consultas().consultarRoles();
for(Rol rol : listaRoles) {
cboRoles.addItem(rol.getRolName());
}
}
private void llenarComboUsuarios(String rol) {
cboUsuarios.removeAllItems();
cboUsuarios.addItem("Seleccione");
List<String> listaUsuarios = new Consultas().consultarUsuarioByRol(rol);
for(String usuario : listaUsuarios) {
cboUsuarios.addItem(usuario);
}
}
}
public class InterfazMain {
public static void main(String[] args) {
LlenarCombo componente = new LlenarCombo();
componente.setVisible(true);
}
}