Olá! 8O 8O
Estou fazendo um programinha que possui um JTable dentro de um ScrollPanel e quando uma linha é selecionada e o botão Incluir ou o botão atualizar é apertado é aberto um JFrame com os campos a serem preenchidos/alterardos. Quando eu clico no OK os dados dentro desse JFrame atualizam o banco de dados mas não atualizam o JTable. Vocês podem me informar como eu faço para atualizar o JTable com os dados
inseridos/atualizados?
===Essa Classe contêm o JTable e o ScrollPanel===
public class Medicamento2 extends JPanel implements ActionListener, ItemListener{
JTable table;
JScrollPane scrollPane;
JPanel p, p1, p2, p3;
JButton b1, b2, b3, b4, b5, b6;
//private JLabel diver;
String selCol;
private boolean DEBUG = false;
private boolean ALLOW_COLUMN_SELECTION = false;
private boolean ALLOW_ROW_SELECTION = true;
String data[][];
public Medicamento2(){
p = new JPanel();
p.setLayout(new BorderLayout());
p.setBackground(Color.red);
p3 = new JPanel();
p3.setBackground(Color.blue);
//b1 = new JButton("Limpar");
//b1.addActionListener(this);
//p3.add(b1);
b2 = new JButton("Incluir");
b2.addActionListener(this);
p3.add(b2);
b3 = new JButton("Alterar");
b3.addActionListener(this);
p3.add(b3);
b4 = new JButton("Excluir");
b4.addActionListener(this);
p3.add(b4);
b6 = new JButton("Encerrar");
b6.addActionListener(this);
p3.add(b6);
p.add(p3, "North");
try{
conexaoMDB conec = new conexaoMDB();
String sql = "select cod_remedio, desc_remedio, embalagem_remedio, dosagem_remedio, tipo_remedio, valor_vita, valor_pachecco, valor_farmalife from Tab_Remedio where tipo_remedio='R'";
ResultSet rs = conec.setConexao(sql, "c");
//System.out.println(rs);
rs.last();
int tam = rs.getRow();
//int tam = 20;
data = new String[tam][8];
int col=0;
int lin = 0;
rs.beforeFirst();
while (rs.next())
{
String cod_remedio = rs.getString(1);
String desc_remedio = rs.getString(2);
String dosagem_remedio = rs.getString(3);
String embalagem_remedio = rs.getString(4);
String tipo_remedio = rs.getString(5);
String valor_vita = rs.getString(6);
String valor_pachecco = rs.getString(7);
String valor_farmalife = rs.getString(8);
data[lin][0] = cod_remedio;
data[lin][1] = desc_remedio;
data[lin][2] = dosagem_remedio;
data[lin][3] = embalagem_remedio;
data[lin][4] = tipo_remedio;
data[lin][5] = valor_vita;
data[lin][6] = valor_pachecco;
data[lin][7] = valor_farmalife;
lin = ++lin;
//System.out.println("Variavel lin no Loop: " + lin);
} //Fim While
//System.out.println("Variavel lin fora do Loop: " + lin);
//stmt.close();
//con.close();
//System.out.println(data);
String[] columnNames = {"Código", "Remédio", "Dose", "Emb.", "Tipo", "Vita", "Pachecco", "Farmalife"};
table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 300));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
if (ALLOW_ROW_SELECTION){
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
if (e.getValueIsAdjusting()) return;
ListSelectionModel lsm = (ListSelectionModel)e.getSource();
if (lsm.isSelectionEmpty()){
System.out.println("Nenhuma linha foi selecionada");
} else {
int selectedRow = lsm.getMinSelectionIndex();
System.out.println("Linha " + selectedRow + "foi selecionada");
selCol = data[selectedRow][0];
System.out.println("valor = " + selCol);
}
}
});
} else {
table.setRowSelectionAllowed(false);
}
if (ALLOW_COLUMN_SELECTION) { // false by default
if (ALLOW_ROW_SELECTION) {
//We allow both row and column selection, which
//implies that we *really* want to allow individual
//cell selection.
table.setCellSelectionEnabled(true);
}
table.setColumnSelectionAllowed(true);
ListSelectionModel colSM = table.getColumnModel().getSelectionModel();
colSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
//Ignore extra messages.
if (e.getValueIsAdjusting()) return;
ListSelectionModel lsm = (ListSelectionModel)e.getSource();
if (lsm.isSelectionEmpty()) {
System.out.println("No columns are selected.");
} else {
int selectedCol = lsm.getMinSelectionIndex();
System.out.println("Column " + selectedCol
+ " is now selected.");
}
}
});
}
//System.out.println(table.getColumn(columnNames[0]));
if (DEBUG) {
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
printDebugData(table);
}
});
}
//Create the scroll pane and add the table to it.
scrollPane = new JScrollPane(table);
//Add the scroll pane to this window.
add(scrollPane, BorderLayout.CENTER);
p.add(scrollPane, "Center");
add(p);
}
catch (SQLException ex)
{
String qualErro;
qualErro = "Problemas no acesso ao banco de dados !\nAs mensagens retornadas são:"+
"\nSQLState: " + ex.getSQLState() +
"\nMensagem: " + ex.getMessage() +
"\nCódigo do erro: " + ex.getErrorCode();
System.out.println(qualErro);
}
catch (java.lang.Exception ex1)
{
String qualErro;
qualErro = "O driver JDBC:ODBC não foi encontrado !\nA mensagem de erro é:"+
"\nMensagem: " + ex1.getMessage();
System.out.println(qualErro);
System.out.println(ex1.fillInStackTrace());
}
}
private void printDebugData(JTable table) {
int numRows = table.getRowCount();
int numCols = table.getColumnCount();
javax.swing.table.TableModel model = table.getModel();
//System.out.println("Value of data: ");
for (int i=0; i < numRows; i++) {
//System.out.print(" row " + i + ":");
for (int j=0; j < numCols; j++) {
//System.out.print(" " + model.getValueAt(i, j));
}
//System.out.println();
}
//System.out.println("--------------------------");
}
public void itemStateChanged(ItemEvent evt)
{
//int qual = list1.getSelectedIndex();
//atualizaTela(qual);
}
public void actionPerformed(ActionEvent evt)
{
String arg = evt.getActionCommand();
if (arg.equals("Incluir"))
incluir();
else
if (arg.equals("Alterar"))
alterar();
else
if (arg.equals("Excluir"))
excluir();
else
if (arg.equals("Encerrar"))
System.exit(0);
}
public void incluir(){
//System.out.println(table.);
montaTela tela = new montaTela("0", "i");
tela.setSize(780, 550);
//dl.setBackground(Color.white);
tela.setResizable(false);
tela.pack();
tela.show();
}
public void alterar(){
System.out.println("Alterar: selCol=" + selCol);
montaTela tela = new montaTela(selCol, "a");
tela.setSize(780, 550);
//dl.setBackground(Color.white);
tela.setResizable(false);
tela.pack();
tela.show();
}
public void excluir(){
System.out.println("Excluir");
}
}
===Essa Classe contem o JFrame que faz atualização====
public class montaTela extends JFrame implements ActionListener{
int codRemedio;
JPanel p, p1, p2, p3;
JButton bIncluir, bLimpar, bSair, bAlterar;
ButtonGroup g;
String codExt;
//String buttonName;
JTextField tNome, tDose, tEmbalagem, tPVita, tPPachecco, tPFarmalife;
JLabel lNome, lDose, lTipo, lEmbalagem, lPVita, lPPachecco, lPFarmalife;
JRadioButton buttonRe, buttonPe;
public montaTela(String cod, String op) {
//op é a operação (incluir, alterar)
//cod é o código do remédio que será alterado
codExt = cod;
if (op.equals("i")){
}
else if (op.equals("a")){
}
else{
System.out.println("Erro: Valor de operação inválido");
}
p = new JPanel();
p.setLayout(new BorderLayout());
p.setBackground(Color.darkGray);
p.setForeground(Color.black);
p.setBorder(BorderFactory.createBevelBorder(1));
p.setSize(300, 300);
p2 = new JPanel();
p2.setBackground(Color.pink);
p2.setForeground(Color.black);
p2.setLayout(new GridLayout(6,6));
lNome = new JLabel(" Nome do Remédio: ", Label.RIGHT);
lDose = new JLabel(" Dosagem: ", Label.RIGHT);
lEmbalagem = new JLabel(" Embalagem: ", Label.RIGHT);
lPVita = new JLabel(" Preço Vita: ", Label.RIGHT);
lPPachecco = new JLabel(" Preço Pachecco: ", Label.RIGHT);
lPFarmalife = new JLabel(" Preço Farmalife: ", Label.RIGHT);
tNome = new JTextField(10);
tDose = new JTextField(10);
tEmbalagem = new JTextField(5);
tPVita = new JTextField(5);
tPPachecco = new JTextField(5);
tPFarmalife = new JTextField(5);
p2.add(lNome); p2.add(tNome);p2.add(new JLabel());
p2.add(lDose); p2.add(tDose);p2.add(new JLabel());
p2.add(lEmbalagem); p2.add(tEmbalagem);p2.add(new JLabel());
p2.add(lPVita); p2.add(tPVita);p2.add(new JLabel());
p2.add(lPPachecco); p2.add(tPPachecco);p2.add(new JLabel());
p2.add(lPFarmalife); p2.add(tPFarmalife);p2.add(new JLabel());
p.add(p2, "North");
JPanel buttonPanel = new JPanel();
g = new ButtonGroup();
buttonRe = new JRadioButton("Remédio", true);
buttonPe = new JRadioButton("Perfumaria", true);
buttonRe.addActionListener(this);
buttonPe.addActionListener(this);
if (op.equals("i")){
tDose.setText("0");
tEmbalagem.setText("CX");
tPVita.setText("0");
tPPachecco.setText("0");
tPFarmalife.setText("0");
}
else if (op.equals("a")){
try{
conexaoMDB conec = new conexaoMDB();
String sql = "select cod_remedio, desc_remedio, embalagem_remedio, dosagem_remedio, tipo_remedio, valor_vita, valor_pachecco, valor_farmalife from Tab_Remedio where cod_remedio=" + codExt;
System.out.println(sql);
ResultSet rs = conec.setConexao(sql, "c");
while (rs.next())
{
tNome.setText(rs.getString(2));
tDose.setText(rs.getString(4));
tEmbalagem.setText(rs.getString(3));
tPVita.setText(rs.getString(6));
tPPachecco.setText(rs.getString(7));
tPFarmalife.setText(rs.getString(8);
if (op.equals("a")){
if (rs.getString(5).equals("R")){
buttonRe.setSelected(true);
buttonPe.setSelected(false);
}
else if (rs.getString(5).equals("P")){
buttonRe.setSelected(false);
buttonPe.setSelected(true);
}
//Trata perfumaria e remédios
}
}
}
catch (SQLException ex)
{
String qualErro;
qualErro = "Problemas no acesso ao banco de dados !\nAs mensagens retornadas são:"+
"\nSQLState: " + ex.getSQLState() +
"\nMensagem: " + ex.getMessage() +
"\nCódigo do erro: " + ex.getErrorCode();
System.out.println(qualErro);
}
catch (java.lang.Exception ex1)
{
String qualErro;
qualErro = "O driver JDBC:ODBC não foi encontrado !\nA mensagem de erro é:"+
"\nMensagem: " + ex1.getMessage();
System.out.println(qualErro);
System.out.println(ex1.fillInStackTrace());
}
}
g.add(buttonRe);
g.add(buttonPe);
buttonPanel.add(buttonRe);
buttonPanel.add(buttonPe);
p.add(buttonPanel, "Center");
p3 = new JPanel();
p3.setBackground(Color.blue);
p3.setForeground(Color.black);
if (op.equals("i")){
bLimpar = new JButton("Limpar");
bLimpar.addActionListener(this);
p3.add(bLimpar);
}
if (op.equals("i")){
bIncluir = new JButton("Incluir");
bIncluir.addActionListener(this);
p3.add(bIncluir);
}
else if (op.equals("a")){
bAlterar = new JButton("Alterar");
bAlterar.addActionListener(this);
p3.add(bAlterar);
}
bSair = new JButton("Sair");
bSair.addActionListener(this);
p3.add(bSair);
p.add(p3, "South");
getContentPane().add(p);
}
public void actionPerformed(ActionEvent evt){
String arg = evt.getActionCommand();
if (arg.equals("Limpar")){
//System.out.println("Limpar");
limpar();
}
else if (arg.equals("Incluir")){
incluirRP();
}
else if (arg.equals("Alterar")){
alterarRP();
}
else if (arg.equals("Sair")){
//System.exit(0);
this.hide();
}
}
public void limpar()
{
tNome.setText("");
tDose.setText("0");
tEmbalagem.setText("CX");
tPVita.setText("0");
tPPachecco.setText("0");
tPFarmalife.setText("0");
buttonRe.setSelected(true);
buttonPe.setSelected(false);
}
public void alterarRP(){
System.out.println("montaTela: Alterar");
System.out.println("cod=" + codExt);
conexaoMDB conec = new conexaoMDB();
String tipo = "";
String teste;
if (buttonRe.isSelected())
{
tipo = "R";
} else if (buttonPe.isSelected())
{
tipo = "P";
}
if (tNome.getText().equals("")){
JOptionPane.showMessageDialog(this,"Favor Preencher o campo Descrição","Erro",JOptionPane.ERROR_MESSAGE);
tNome.requestFocus();
//tNome.setText("");
//break;
}
if(tDose.getText().equals("")){
tDose.setText("0");
}
if(tEmbalagem.getText().equals("")){
JOptionPane.showMessageDialog(this,"Favor Preencher o campo Embalagem","Erro",JOptionPane.ERROR_MESSAGE);
tEmbalagem.requestFocus();
//tEmbalagem.setText("");
//break;
}
if(tPVita.getText().equals("")){
tPVita.setText("0");
}
if(tPPachecco.getText().equals("")){
tPPachecco.setText("0");
}
if(tPFarmalife.getText().equals("")){
tPFarmalife.setText("0");
}
if ((!tNome.getText().equals("")) && (!tEmbalagem.getText().equals(""))){
String sql = "UPDATE Tab_remedio set desc_remedio='" + tNome.getText() + "', " +
"dosagem_remedio=" + tDose.getText() + ", embalagem_remedio='" + tEmbalagem.getText() + "', " +
"tipo_remedio='" + tipo + "', valor_vita=" + tPVita.getText().replaceAll(",", ".") + ", " +
"valor_pachecco=" + tPPachecco.getText().replaceAll(",", ".") + ", valor_farmalife=" + tPFarmalife.getText().replaceAll(",", ".") + " " +
"where cod_remedio=" + codExt;
System.out.println(sql);
conec.setConexao(sql, "u");
}
Medicamento2 med = new Medicamento2();
med.table.revalidate();
med.table.repaint();
//med.repaint();
//med.updateUI();
}
public void incluirRP(){
conexaoMDB conec = new conexaoMDB();
String tipo = "";
String teste;
//System.out.println("Incluir");
if (buttonRe.isSelected())
{
tipo = "R";
} else if (buttonPe.isSelected())
{
tipo = "P";
}
if (tNome.getText().equals("")){
JOptionPane.showMessageDialog(this,"Favor Preencher o campo Descrição","Erro",JOptionPane.ERROR_MESSAGE);
tNome.requestFocus();
//tNome.setText("");
//break;
}
if(tDose.getText().equals("")){
tDose.setText("0");
}
if(tEmbalagem.getText().equals("")){
JOptionPane.showMessageDialog(this,"Favor Preencher o campo Embalagem","Erro",JOptionPane.ERROR_MESSAGE);
tEmbalagem.requestFocus();
//tEmbalagem.setText("");
//break;
}
if(tPVita.getText().equals("")){
tPVita.setText("0");
}
if(tPPachecco.getText().equals("")){
tPPachecco.setText("0");
}
if(tPFarmalife.getText().equals("")){
tPFarmalife.setText("0");
}
if ((!tNome.getText().equals("")) && (!tEmbalagem.getText().equals(""))){
String sql = "Insert into Tab_remedio (desc_remedio, "+
"dosagem_remedio, embalagem_remedio, tipo_remedio, valor_vita, "+
"valor_pachecco, valor_farmalife)"+
"values('" + tNome.getText() + "', " + tDose.getText() + ", '"+
tEmbalagem.getText() + "', '" + tipo + "', " + tPVita.getText().replaceAll(",", ".")+
", " + tPPachecco.getText().replaceAll(",", ".") + ", " + tPFarmalife.getText().replaceAll(",", ".") + ")";
System.out.println(sql);
conec.setConexao(sql, "i");
}
Medicamento2 med = new Medicamento2();
med.table.revalidate();
med.table.repaint();
}
}
Grata,
Andrea