Newsgroup: it.comp.java
Titolo: TableModel e ultima cella modificata

Ciao a tutti,
vi spiego il mio problema:
1) creo una DefaultTableModel in una jtable
2) aggancio alla jtable delle combobox editabili
3) creo un jmenu di salvataggio della tabella in relativo database.
Funziona tutto cioè la TableModel viene costantemente aggiornata con i
valori
che l'utente digita oppure seleziona dalla combobox, ma non l'ultimo
valore: mi spiego
Nel momento in cui l'utente seleziona il menu sottostante di
salvataggio nel database della table model
il testo dell'ultima cella modificata(in cui vi è ancora il cursore)
non
è aggiornato nella table-model, quindi immagino che devo fissare anche
l'ultima cella
nella table model prima di riscrivere il database ma non so come fare:
Chiaramente l'utente la cella l'ha modificata e quindi si aspetta tale
modifica anche nel database.
Riporto sotto il testo del menu di salvataggio perche l'intera
applicazione funziona correttamente
e immagino che si debba lavorare proprio in questo item.
Grazie per un eventuale aiuto
Dado
	private JMenuItem getJMenuItemSalva() {
		if (jMenuItemSalva == null) {
			jMenuItemSalva = new JMenuItem();
			jMenuItemSalva.setText("Salva");
			jMenuItemSalva.setSelected(true);
			jMenuItemSalva.setRolloverEnabled(true);
			jMenuItemSalva.addActionListener(new java.awt.event.ActionListener()
{
				public void actionPerformed(java.awt.event.ActionEvent e) {
			             Io.RiscriviDataBase(Dfm);
							}
 
			});
     ;}
 
 
 
		return jMenuItemSalva;
	}

 ha scritto nel messaggio 
news:1126509194.5...@g14g2000cwa.googlegroups.com...
Ciao a tutti,
vi spiego il mio problema:
1) creo una DefaultTableModel in una jtable
2) aggancio alla jtable delle combobox editabili
3) creo un jmenu di salvataggio della tabella in relativo database.
Funziona tutto cioč la TableModel viene costantemente aggiornata con i
valori
che l'utente digita oppure seleziona dalla combobox, ma non l'ultimo
valore: mi spiego
Nel momento in cui l'utente seleziona il menu sottostante di
salvataggio nel database della table model
il testo dell'ultima cella modificata(in cui vi č ancora il cursore)
non
č aggiornato nella table-model, quindi immagino che devo fissare anche


Ciao, ho provato come hai detto ma restituisce NullpointerException
in Dfe.stopCellEditing();
	private javax.swing.JPanel jContentPane = null;
	private JTable jTable = null;
	private JScrollPane jScrollPane = null;
	private FileIo Io = new FileIo();
	private DefaultTableModel Dfm = new DefaultTableModel();
	private JMenuBar jJMenuBar = null;
	private JMenu jMenu = null;
	private JMenuItem jMenuItemSalva = null;  //
@jve:decl-index=0:visual-constraint="113,247"
	private JMenuItem jMenuItemEsci = null;
	JComboBox jComboBoxGenerica = null;
	DefaultCellEditor Dfe = null;
//	private DefaultCellEditor Dfe = new DefaultCellEditor();
	//  @jve:decl-index=0:visual-constraint="655,234"
	/**
	 * This is the default constructor
	 * @throws Exception
	 */
	public Frame3() throws Exception {
		super();
		initialize();
	}
	/**
	 * This method initializes this
	 *
	 * @return void
	 * @throws Exception
	 */
	private void initialize() throws Exception {
		this.setJMenuBar(getJJMenuBar());
		this.setSize(443, 208);
		this.setContentPane(getJScrollPane());
		this.setTitle("Tabella 14");
	}
	/**
	 * This method initializes jContentPane
	 *
	 * @return javax.swing.JPanel
	 * @throws Exception
	 */
	private JScrollPane getJScrollPane() throws Exception {
		if (jScrollPane == null) {
			jScrollPane = new JScrollPane();
			jScrollPane.setViewportView(getJTable());
		}
		return jScrollPane;
	}
	/**
	 * This method initializes jTable
	 *
	 * @return javax.swing.JTable
	 * @throws Exception
	 */
	public JTable getJTable() throws Exception {
		if (jTable == null) {
			Dfm.setDataVector(Io.LeggiDati(),Io.LeggiColumnName());
			jTable = new JTable(Dfm);
			jTable.setAutoResizeMode(5);
			jTable.setRowHeight(30);
			jTable.setRowMargin(10);
			jTable.setRowSelectionAllowed(true);
			TableColumn column = null;
			for (int ic = 0; ic < jTable.getColumnCount(); ic++) {
				column = jTable.getColumnModel().getColumn(ic);
				if (jTable.getColumnName(ic).equalsIgnoreCase   ("Vegetariano")==
false) {
					column.setResizable(false);
					column.setMaxWidth(800);
					column.setMinWidth(20);
					DefaultCellEditor Dfe = new
DefaultCellEditor(getJComboBoxGenerica(ic,jTable.getColumnName(ic)));
			    	column.setCellEditor(Dfe);
					                }
    	   }
		}
		return jTable;
	}
	public  JComboBox getJComboBoxGenerica(int ic, String stringa) throws
Exception {
		final Vector Vettore = new Vector();
		int ir= 0;
		while (ir < Io.LeggiDati().toArray().length){
			if
(Vettore.contains(((Vector)Io.LeggiDati().elementAt(ir)).elementAt(ic))){
	    	          }
	    	 else
	    	 {
Vettore.add(((Vector)Io.LeggiDati().elementAt(ir)).elementAt(ic));}
	   	 	 ir++;}
		final JComboBox jComboBoxGenerica = new JComboBox(Vettore);
		jComboBoxGenerica.setEditable(true);
		jComboBoxGenerica.addActionListener(new
java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				   	System.out.println("actionPerformed()"); // TODO Auto-generated
Event
					if (Vettore.contains(jComboBoxGenerica.getSelectedItem())){
						System.out.println("Esiste già: non aggiungo >>> " +
jComboBoxGenerica.getSelectedItem());
						}
					else
						{System.out.println("Non Esiste: aggiungo >>> " +
jComboBoxGenerica.getSelectedItem());
						Vettore.add(jComboBoxGenerica.getSelectedItem());
						}
				}
			});
		return jComboBoxGenerica;
	}
	/**
	 * This method initializes jJMenuBar
	 *
	 * @return javax.swing.JMenuBar
	 */
	private JMenuBar getJJMenuBar() {
		if (jJMenuBar == null) {
			jJMenuBar = new JMenuBar();
			jJMenuBar.setPreferredSize(new java.awt.Dimension(20,25));
			jJMenuBar.add(getJMenu());
		}
		return jJMenuBar;
	}
	/**
	 * This method initializes jMenu
	 *
	 * @return javax.swing.JMenu
	 */
	private JMenu getJMenu() {
		if (jMenu == null) {
			jMenu = new JMenu();
			jMenu.setText("File");
			jMenu.add(getJMenuItemSalva());
			jMenu.add(getJMenuItemEsci());
			jMenu.addSeparator();
		}
		return jMenu;
	}
	/**
	 * This method initializes jMenuItemSalva
	 *
	 * @return javax.swing.JMenuItem
	 */
	private JMenuItem getJMenuItemSalva() {
		if (jMenuItemSalva == null) {
			jMenuItemSalva = new JMenuItem();
			jMenuItemSalva.setText("Salva");
			jMenuItemSalva.setSelected(true);
			jMenuItemSalva.setRolloverEnabled(true);
			jMenuItemSalva.addActionListener(new java.awt.event.ActionListener()
{
				public void actionPerformed(java.awt.event.ActionEvent e) {
				Dfe.stopCellEditing();
				Io.RiscriviDataBase(Dfm);
							}
			});
;}
		return jMenuItemSalva;
	}
	/**
	 * This method initializes jMenuItemEsci
	 *
	 * @return javax.swing.JMenuItem
	 */
	private JMenuItem getJMenuItemEsci() {
		if (jMenuItemEsci == null) {
			jMenuItemEsci = new JMenuItem();
			jMenuItemEsci.setText("Esci");
			jMenuItemEsci.setSelected(true);
			jMenuItemEsci.setRolloverEnabled(true);
			jMenuItemEsci.addActionListener(new java.awt.event.ActionListener()
{
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("actionPerformed(Esci)"); // TODO
Auto-generated Event stub actionPerformed()
					System.exit(0);
				}
			});
		}
		return jMenuItemEsci;
	}

 ha scritto nel messaggio 
news:1126616876.0...@g44g2000cwa.googlegroups.com...


Tutto ok
Grazie!!!!