Olá a todos
Estou na fase de desenvolvimento do meu TCC e gostaria de fazer em um dos meus formulários algo que nunca fiz, por exemplo:
Se eu tiver 50 registros no banco, o sistema irá produzir 50 Jpanel com imagens e rótulos.
Independente do tanto de registro o sistema terá que gera uma imagem e um rótulo para cada, que claro, a imagem e o texto do rotulo estão no banco.
Eu fiz de uma forma que não deu certo, mais acho que não estou no caminho errado, pois não apresentou nenhum erro, apenas não apareceu nada no software.
Minha classe ficou dessa maneira, (o interresante está dentro do ActionListener do JcomboBox):
[code]
public class Varios extends JFrame {
private JPanel contentPane;
@SuppressWarnings("rawtypes")
private JComboBox cboTipo;
private JTextField txtFrase;
private JPanel pnlMenu;
private List<JPanel> painels = new ArrayList<>();
private List<JLabel> imgs = new ArrayList<>();
private List<JLabel> rotulos = new ArrayList<>();
public static void main(String[] args) {
Varios frame = new Varios();
frame.setVisible(true);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
public Varios() {
setTitle("Exemplo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 592, 333);
contentPane = new JPanel();
contentPane.setBackground(Color.PINK);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrRolar = new JScrollPane();
scrRolar.setBounds(10, 58, 556, 185);
contentPane.add(scrRolar);
pnlMenu = new JPanel();
scrRolar.setViewportView(pnlMenu);
pnlMenu.setBackground(SystemColor.activeCaption);
pnlMenu.setBorder(new LineBorder(new Color(0, 0, 0)));
txtFrase = new JTextField();
txtFrase.setBackground(SystemColor.activeCaption);
txtFrase.setEditable(false);
txtFrase.setBounds(10, 254, 556, 20);
contentPane.add(txtFrase);
txtFrase.setColumns(10);
cboTipo = new JComboBox();
cboTipo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (cboTipo.getSelectedIndex()==0)
pnlMenu.removeAll();
else{
pnlMenu.removeAll();
try {
Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost/teste","root","root");
PreparedStatement stm = conexao.prepareStatement("select * from caminhos where TIPO=?");
stm.setString(1, (String) cboTipo.getSelectedItem());
ResultSet rs = stm.executeQuery();
int i = 0;
while (rs.next()){
imgs.add(new JLabel());
imgs.get(i).setIcon(new ImageIcon(getClass().getResource(rs.getString("IMAGEM"))));
rotulos.add(new JLabel());
rotulos.get(i).setText(rs.getString("DESCRICAO"));
painels.add(new JPanel());
painels.get(i).setLayout(new BorderLayout(3,3));
painels.get(i).add(BorderLayout.CENTER , imgs.get(i));
painels.get(i).add(BorderLayout.SOUTH, rotulos.get(i));
}
for (JPanel painel : painels ) {
pnlMenu.add(painel);
}
} catch (SQLException e) {
e.printStackTrace();
}
}//if
}//metodo
});
cboTipo.setModel(new DefaultComboBoxModel(new String[] {"selecione um tipo", "amor", "amizade"}));
cboTipo.setBounds(10, 22, 170, 25);
contentPane.add(cboTipo);
}
}[/code]
Por via das dúvidas postarei meu projeto, que é um exercício para que eu saiba como fazer, e também postarei o banco que estou utilizando, que é um banco Mysql. Que tem alguns registros espero que alguém possa me ajudar, pois não consigo executar.