Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    JTable e TableModelListener

    Ciao ragazzi ho un bel problemino ke non riesco a risolvere. Ho un db da cui m prendo i dati con una query e li metto un una jtable sul quale poi voglio registrare un update ma non ci riesco in quanto cosa succede:
    ho un'interfaccia con un pulsante ke m visualizza le tabelle, schiacciando viene fatta la query e istanziata la jtable in base alla tabella scelta nella query. A questo punto dvrei mettere il listener ma non posso metterlo xkè dovrei metterlo al di fuori dell'actionperformed dove però non mi vede i dati per le regole di scope..cmq questo è il codice:
    codice:
    public class MainGUI extends javax.swing.JFrame implements ComponentListener {
    	static protected Connection con;
    	private JButton elimina;
    	private JButton aggiungi;
    	private JButton modifica;
    	private JButton vai;
    	private JButton logout;
    	private JButton save;
    	private JLabel visLabel;
    	private JComboBox visualizza;
    	private JScrollPane jScrollPane1;
    	private JTable table;
    	private Statement cmd;
    	private TableModel tableModel;
    	private static int update;
    	private static boolean aggiornato;
    	private int colonne;
    	private int row;
    	private String [][] dati;
    	private String [] nomiColonne;
    	private int col,riga;
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 7525219833793207982L;
    
    		public MainGUI(Connection con) throws SQLException {
    		super();
    		initGUI(con);
    		cmd = con.createStatement ();
    		
    	}
    	
    	void initGUI(final Connection con) {
    		try {
    			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    			getContentPane().setLayout(null);
    			
    			this.setVisible(true);
    			this.setPreferredSize(new java.awt.Dimension(1000, 600));
    			this.setExtendedState(Frame.MAXIMIZED_BOTH);
    			this.setMinimumSize(new java.awt.Dimension(1000, 600));
    			this.addComponentListener(this);
    			
    				
    			{
    				ComboBoxModel visualizzaModel = 
    					new DefaultComboBoxModel(
    							new String[] { "Ambulanze", "Ambulatori","Inservienti",
    										   "Interventi","Medici","Paramedici",
    										   "Pazienti","Prenotazioni",
    										   "Reparti","Ricoveri", "Strumentazione"});
    				
    				visualizza = new JComboBox();
    				getContentPane().add(visualizza);
    				visualizza.setModel(visualizzaModel);
    				visualizza.setBounds(81, 3, 130, 23);
    				
    				
    			}
    			{
    				visLabel = new JLabel();
    				getContentPane().add(visLabel);
    				visLabel.setText("Visualizza :");
    				visLabel.setBounds(5, 6, 104, 16);
    			}
    			{
    				save = new JButton();
    				getContentPane().add(save);
    				save.setText("Salva");
    				save.setBounds(12, 544, 79, 23);
    			}
    			{
    				logout = new JButton();
    				getContentPane().add(logout);
    				logout.setText("Logout");
    				logout.setBounds(912, 544, 77, 23);
    				logout.addActionListener(new ActionListener(){
    					public void actionPerformed(ActionEvent e){
    						
    						try {
    							cmd.close();
    							con.close();
    
    						} catch (SQLException e1) {
    							// TODO Auto-generated catch block
    							e1.printStackTrace();
    						}
    						dispose();
    						MenuLogin m = new MenuLogin();
    						m.setVisible(true);
    						
    						}
    				});
    			}
    			{
    				jScrollPane1 = new JScrollPane();
    				getContentPane().add(jScrollPane1);
    				jScrollPane1.setBounds(12, 37, 976, 495);
    				jScrollPane1.setAutoscrolls(true);
    				{
    					table = new JTable();
    					jScrollPane1.setViewportView(table);
    					
    				}
    				
    			}
    			{
    				vai = new JButton();
    				getContentPane().add(vai);
    				vai.setText("Vai");
    				vai.setBounds(223, 3, 67, 23);
    				
    				vai.addActionListener(new ActionListener(){
    					public void actionPerformed(ActionEvent e){
    						String tabella = "";
    						if(visualizza.getSelectedItem()=="Ambulanze")
    							tabella = "AMBULANZA";
    						else if(visualizza.getSelectedItem()=="Ambulatori")
    							tabella = "AMBULATORIO";
    						else if(visualizza.getSelectedItem()=="Inservienti")
    							tabella = "INSERVIENTE";
    						else if(visualizza.getSelectedItem()=="Interventi")
    							tabella = "INTERVENTO";
    						else if(visualizza.getSelectedItem()=="Medici")
    							tabella = "MEDICO";
    						else if(visualizza.getSelectedItem()=="Paramedici")
    							tabella = "PARAMEDICO";
    						else if(visualizza.getSelectedItem()=="Pazienti")
    							tabella = "PAZIENTE";
    						else if(visualizza.getSelectedItem()=="Prenotazioni")
    							tabella = "PRENOTAZIONE";
    						else if(visualizza.getSelectedItem()=="Reparti")
    							tabella = "REPARTO";
    						else if(visualizza.getSelectedItem()=="Ricoveri")
    							tabella = "RICOVERO_ATTUALE";
    						else if(visualizza.getSelectedItem()=="Strumentazione")
    							tabella = "STRUMENTAZIONE";
    						
    						String qry1 ="SELECT COUNT(*) AS RECORD_COUNT FROM "+tabella;
    						String qry2 = "SELECT * FROM "+tabella;
    						try {
    							
    							
    				
    						
    						ResultSet res = cmd.executeQuery(qry1);
    						row=0;
    						while(res.next())
    						  row = res.getInt("RECORD_COUNT");
    						res = cmd.executeQuery(qry2);
    						ResultSetMetaData md = res.getMetaData();
    						colonne = md.getColumnCount();
    						nomiColonne = new String[colonne];
    						dati = new String[row][colonne];
    						for(int i = 1; i<= colonne; i++)
    							nomiColonne[i-1] = md.getColumnName(i);
    						int counter =0;
    						while(res.next()){
    			                for (int i = 1; i <= colonne; i++) {
    			                	dati[counter][i-1] = res.getString(i);
    			                	
    			                }counter ++;
    			                       
    
    			                }
    						res.close();
    						tableModel = new DefaultTableModel(dati , nomiColonne);
    						table.setModel(tableModel);
    						
    						tableModel.addTableModelListener(new TableModelListener(){
    
    							@Override
    							public void tableChanged(TableModelEvent e) {
    								System.out.println("ljksfjskdfh");
    								if(e.getType()==TableModelEvent.UPDATE){
    									update = e.getType();
    									aggiornato = true;
    									col= e.getColumn();
    									riga = e.getFirstRow();
    									table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
    								}
    									
    							}
    							
    						});
    						
    							
    						
    						}
    							
    						 catch (SQLException e1) {
    							// TODO Auto-generated catch block
    							e1.printStackTrace();
    						}
    						 						
    				}});
    				
    				if(aggiornato == true && update==TableModelEvent.UPDATE){
    					System.out.println(tableModel.getValueAt(riga, col));
    		//Query prova errata			String up = "UPDATE AMBULANZA SET "+table.getColumnName(col)+" = "+"'"+table.getValueAt(riga, col)+"'";
    					int r = cmd.executeUpdate(up);
    					//JOptionPane op = new JOptionPane("Hai aggiornato "+r);
    					aggiornato =  false;
    				}
    			}
    			{
    				modifica = new JButton();
    				getContentPane().add(modifica);
    				modifica.setText("Modifica");
    				modifica.setBounds(434, 3, 87, 23);
    			}
    			{
    				aggiungi = new JButton();
    				getContentPane().add(aggiungi);
    				aggiungi.setText("Aggiungi");
    				aggiungi.setBounds(336, 3, 87, 23);
    			}
    			{
    				elimina = new JButton();
    				getContentPane().add(elimina);
    				elimina.setText("Elimina");
    				elimina.setBounds(532, 3, 87, 23);
    			}
    
    			pack();
    			this.setSize(1000, 600);
    		} catch (Exception e) {
    		    //add your error handling code here
    			e.printStackTrace();
    		}
    	}
    
    	@Override
    	public void componentHidden(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void componentMoved(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void componentResized(ComponentEvent e) {
    		save.setBounds(12, this.getHeight()-56, 79, 23);
    		logout.setBounds(this.getWidth()-88, this.getHeight()-56, 79, 23);
    		table.setSize(this.getWidth()-24, this.getHeight()-127);
    		jScrollPane1.setBounds(12, 37,this.getWidth()-24,  this.getHeight()-127);
    		
    		
    	}
    
    	@Override
    	public void componentShown(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    }

  2. #2
    risolto... ho creato varie classi rikiamandole csi tutto funziona come deve

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.