Estou com uma Jtable na qual altero alguns dados e por fim tem um Jbutton para atualizar, só que para atualizar os dados primeiro eu faço uma verificação no meu BD para saber se existe o nome passado na tabela, se sim a atualização continua e vida que segue, porém se não tiver eu preciso que após o usuário clicar em atualizar apareça um JOptionPane dizendo que o nome não existe ou foi digitado incorretamente, logo ele clica em ok e retorna para a tabela sem que seja necessário preencher novamente todos os dados.
É possível? como faço?
segue algumas partes do código:
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import classes.Palet;
import classes_secundárias.Palet_freezer_DB;
import main.Teste_funcs;
public class Estoque_Modification extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
protected static List<Palet> palets = new ArrayList<>();
public static void main(String[] args) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) { // Para mudar o Design da interface
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException
| javax.swing.UnsupportedLookAndFeelException ex) {
System.err.println(ex);
}
Estoque_Modification tela = new Estoque_Modification(1);
tela.setLocationRelativeTo(null);
tela.setDefaultCloseOperation(EXIT_ON_CLOSE);
tela.setVisible(true);
}
private class PalletCellRenderer implements TableCellRenderer {
private JLabel label = new JLabel();
@Override
public Component getTableCellRendererComponent(JTable table, Object conteudo, boolean selecionado,
boolean focado, int lin, int col) {
label.setText(String.valueOf(conteudo));
if (col == 0) {
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setBackground(table.getTableHeader().getBackground());
label.setOpaque(true);
} else {
label.setOpaque(false);
switch (lin) {
case 0:
label.setHorizontalAlignment(SwingConstants.CENTER);
break;
case 1:
label.setHorizontalAlignment(SwingConstants.CENTER);
break;
case 2:
label.setHorizontalAlignment(SwingConstants.CENTER);
break;
case 3:
label.setHorizontalAlignment(SwingConstants.CENTER);
break;
case 4:
label.setHorizontalAlignment(SwingConstants.CENTER);
break;
case 5:
label.setHorizontalAlignment(SwingConstants.CENTER);
break;
}
}
return label;
}
}
public Estoque_Modification(int id) {
super("Modificação Estoque");
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
int key = JOptionPane.showConfirmDialog(null, "Deseja salvar as alterações?");
if(key == JOptionPane.YES_OPTION) {
verify();
}else if(key == JOptionPane.NO_OPTION){
Estoque_Modification.this.dispose();
}
}
});
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setMinimumSize(new Dimension(310, 260));
Estoque_Modification.palets = Teste_funcs.Busca_com_id_palet_PS(id);
JButton btnAtualizar = new JButton("Atualizar");
btnAtualizar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
verify();
}
});
btnAtualizar.setBounds(102, 181, 89, 23);
JPanel panel = new JPanel();
panel.setBorder(new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel.setBounds(10, 28, 274, 125);
JTable tablePallets = new JTable(new PalletTableModel());
tablePallets.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
tablePallets.setDefaultRenderer(Object.class, new PalletCellRenderer());
tablePallets.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addContainerGap()
.addComponent(tablePallets, GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE)
.addContainerGap())
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addContainerGap()
.addComponent(tablePallets, GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE)
.addContainerGap())
);
panel.setLayout(gl_panel);
getContentPane().setLayout(null);
getContentPane().add(btnAtualizar);
getContentPane().add(panel);
JMenuBar menuBar = new JMenuBar();
menuBar.setBounds(0, 0, 304, 21);
getContentPane().add(menuBar);
JMenu mnRetornar = new JMenu("Retornar");
mnRetornar.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
Estoque_Modification.this.dispose();
}
});
menuBar.add(mnRetornar);
}
public void verify() {
Palet palet = Estoque_Modification.palets.get(0);
Palet_freezer_DB.update_palet_Prepared_Statement(palet);
Estoque_Modification.this.dispose();
}
}
class PalletTableModel extends AbstractTableModel {
// a JTable chama este método pra saber se a célula informada pelos parametros
// lin e col pode ser editada ou não
@Override
public boolean isCellEditable(int lin, int col) {
if (col == 0 || lin == 0) { // os campos da coluna 0 são o "cabeçalho" da nossa table, então não
// pode editar
return false;
}
return true; // as células das outras coluna pode editar
}
private static final long serialVersionUID = 1L;
// a Jtable chama esse método pra saber quantas colunas ela tem
@Override
public int getColumnCount() {
return 2; // uma coluna pra ser o "cabeçalho" e mais uma coluna pra cada palet da lista
}
// a Jtable chama esse método pra saber quantas linhas ela tem
@Override
public int getRowCount() {
return 6; // uma linha pra cada atributo do pallet exceto o ID, que será o cabeçalho
}
// a Jtable chama esse método pra saber o valor a ser renderizado na linha e
// coluna informados
@Override
public Object getValueAt(int lin, int col) {
if (col == 0) {
switch (lin) {
case 0:
return "ID";
case 1:
return "Cerveja";
case 2:
return "Laço";
case 3:
return "Altura";
case 4:
return "Total";
case 5:
return "Última Modificação";
}
}
Palet palet = Estoque_Modification.palets.get(0);
switch (lin) {
case 0:
return palet.getId();
case 1:
return Teste_funcs.Nome_Cerveja(palet.getCerveja_id());
case 2:
return palet.getLaco();
case 3:
return palet.getAltura();
case 4:
return palet.getTotal();
case 5:
return palet.getUltima_mod();
}
return null;
}
// a JTable chama este método pra aplicar o valor que foi inserido na célula
// informada pelos parametros lin e col
@Override
public void setValueAt(Object conteudo, int lin, int col) {
try {
Palet palet = Estoque_Modification.palets.get(0);
switch (lin) {
case 1:
if (Teste_funcs.Verifica_Cerveja((String) conteudo) == null) {
JOptionPane.showMessageDialog(null, "Verifique se o nome da cerveja\n foi digitado corretamente");
}
break;
case 2:
palet.setLaco(Integer.parseInt((String) conteudo));
break;
case 3:
palet.setAltura(Integer.parseInt((String) conteudo));
break;
case 4:
palet.setTotal(Integer.parseInt((String) conteudo));
break;
case 5:
palet.setUltima_mod(Teste_funcs.Relogio());
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Aqui onde ele faz as buscas no BD:
public static String Verifica_Cerveja(String nome) {
String sql = "SELECT nome FROM DB_Estoque.Cerveja where nome like ?;";
Connection conn = Conexao.getConnection();
List<Palet> ListaPalet = new ArrayList<>();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, nome);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
ListaPalet.add(new Palet(rs.getString("nome")));
}else {
return null;
}
Conexao.Fechar_Conexao(conn, ps);
if(id_cerveja(ListaPalet.get(0).getNome()) == -1) {
JOptionPane.showMessageDialog(null, "Error", "", JOptionPane.ERROR_MESSAGE);
return null;
}
return "";
} catch (SQLException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Error", "", JOptionPane.ERROR_MESSAGE);
return null;
}
public static int id_cerveja(String nome) {
String sql = "SELECT id FROM DB_Estoque.Cerveja where nome like ?";
Connection conn = Conexao.getConnection(); // Abrindo conexão
List<Palet> ListaPalet = new ArrayList<>();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, nome);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
ListaPalet.add(new Palet(rs.getInt("id")));
}
Conexao.Fechar_Conexao(conn, ps, rs); // Fechando conexão
return ListaPalet.get(0).getCerveja_id();
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
}