Ciao
ho una jtable con una colonna formata da bottoni che mi aprono un frame che contiene dei textfield che assumono il valore dei campi della riga selezionata.Il mio scopo è quello di poter cambiare tali valori e aggiornare la table.Mi sapreste aiutare?
Vi posto il codice.
codice:
class FrameTabellaFile3 implements TableCellRenderer {
  private TableCellRenderer  defaultRenderer;
  
  public FrameTabellaFile3(TableCellRenderer renderer) {
     defaultRenderer = renderer;
  }

  public Component getTableCellRendererComponent(JTable table, Object value,
						 boolean isSelected,
						 boolean hasFocus,
						 int row, int column)
  {
    if(value instanceof Component)
      return (Component)value;
    return  defaultRenderer.getTableCellRendererComponent(
	   table, value, isSelected, hasFocus, row, column);
  }
 } 

class JTableButtonModel extends AbstractTableModel {
  private Object[][]  rows = {
      { "One", "One",new JButton("Button One") },
      { "Two", "One",new JButton("Button Two") },
      { "Three","One", new JButton("Button Three") },
      { "Four","One", new JButton("Button Four") }
    };

  private String[]  columns = { "Numbers", "Buttons","PROVA" };
  public String getColumnName(int column) { 
    return columns[column];
  }

  public int getRowCount() {
    return  rows.length;
  }

  public int getColumnCount() {
    return  columns.length;
  }

  public Object getValueAt(int row, int column) { 
      return  rows[row][column];
  }

  public boolean isCellEditable(int row, int column) {
    return false;
  }

  public Class getColumnClass(int column) {
    return getValueAt(0, column).getClass();
  }
 } 




class JTableButtonMouseListener implements MouseListener {
  private JTable  tableListener;
  private JDialog dialog;
  private JFrame frm;
  private  JTextField txtCol0;
  private JTextField txtCol1;
  private JButton btn_Salva;
 public void clickOpenDialog(MouseEvent e) {
   MouseEvent buttonEvent;
   tableListener.getColumnName(0);
   
   frm = new JFrame();
   JLabel lblCol0 = new JLabel();
   JLabel lblCol1 = new JLabel();
   lblCol0.setSize(50,50);
   lblCol1.setSize(50,50);
   txtCol0 = new JTextField();
   txtCol1 = new JTextField();
   btn_Salva = new JButton();
   btn_Salva.setText("SALVA");
   btn_Salva.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent e)
       {
        btn_Salva_actionPerformed(e);
       }
     });
   txtCol0.setSize(100,20);
   txtCol1.setSize(100,20);          
   txtCol0.setText(tableListener.getValueAt(tableListener.getSelectedRow(),0).toString());
   txtCol1.setText(tableListener.getValueAt(tableListener.getSelectedRow(),1).toString());
   txtCol0.setSize(100,20);
   txtCol1.setSize(100,20);
          
   JPanel pan = new JPanel();
   GridLayout layout = new GridLayout(3,2);
   lblCol0.setText(tableListener.getColumnName(0));
   lblCol1.setText(tableListener.getColumnName(1));           
   btn_Salva.setSize(100,20);
 
   pan.add(lblCol0);
   pan.add(txtCol0);
   pan.add(lblCol1);
   pan.add(txtCol1);
   pan.add(btn_Salva);
   pan.setLayout(layout);
 
   frm.getContentPane().add(pan);
   frm.pack();
   frm.setVisible(true);
 } 

 private void btn_Salva_actionPerformed(ActionEvent e)
  {
        
        int nRow = tableListener.getSelectedRow();
        tableListener.setValueAt(txtCol0.getText(),nRow,0);
        tableListener.setValueAt(txtCol1.getText(),nRow,1);
     
        tableListener.repaint();
           System.out.println(tableListener.getValueAt(tableListener.getSelectedRow(),0).toString());
        frm.dispose();
  }
  public JTableButtonMouseListener(JTable table) {
     tableListener = table;
  }

  public void mouseClicked(MouseEvent e) {
  //solo la colonna del bottone aziona il dialog.DA MIGLIORARE!!
  if(tableListener.getSelectedColumn()==2)
    clickOpenDialog(e);
  }

  public void mousePressed(MouseEvent e) {
       

  }
  public void mouseExited(MouseEvent e) {
    
  }
  public void mouseEntered(MouseEvent e) {
     
  } 
  public void mouseReleased(MouseEvent e) {
   
  }

 
}


 

 final class JTableButton extends JFrame {
  private JTable  table;
  private JScrollPane   scrollPane;

  public JTableButton() {
    super("JTableButton Demo");
    TableCellRenderer defaultRenderer;

     table = new JTable(new JTableButtonModel());
    defaultRenderer =  table.getDefaultRenderer(JButton.class);
    table.setDefaultRenderer(JButton.class,
			       new FrameTabellaFile3(defaultRenderer));
     table.setPreferredScrollableViewportSize(new Dimension(400, 200));
   
     
    table.addMouseListener(new JTableButtonMouseListener( table));

   table.setValueAt("pippo",0,0);
   
     scrollPane = new JScrollPane( table);
    setContentPane( scrollPane);
  }

  public static void main(String[] args) {
    JFrame frame;
    WindowListener exitListener;

    exitListener = new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
	Window window = e.getWindow();
	window.setVisible(false);
	window.dispose();
	System.exit(0);
      }
    };

    frame = new JTableButton();
    frame.addWindowListener(exitListener);
    frame.pack();
    frame.setVisible(true);
  }
}