Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Problemi con JTable

  1. #1

    Problemi con JTable

    Io ho questa tabella, solo che ho il problema che le caselle sono modificabili e le colonne sono intercambiabili fra loro.
    Ed inoltre se io voglio creare una nuova tabella mi dovrebbe sovrascrivere la vecchia, invece mi rimane visualizzata SEMPRE la prima tabella...
    Inoltre mi viene lasciato uno spazio bianco in altro nel mio frame e il cursore va più in basso rispetto alla finestra....
    Questo è il codice per la tabella:
    codice:
    pubblic void TableSQL() {     
    		setDefaultCloseOperation(JInternalFrame.EXIT_ON_CLOSE);
    		///////////////////////////////////////////////
    		// n° di colonne
    		int columns = 6;
    		// etichette colonne
    		String[] labels = {"postazione", "data_ora", "udt", "articolo","lotto","quantita"};
    		// larghezza colonne
    		int[] widths = {60, 120, 70, 100, 80, 70};
                    try {
                    String driver = "net.sourceforge.jtds.jdbc.Driver";
                    Class.forName(driver).newInstance();
                        } 
                    catch (Exception e) {
                    JOptionPane.showMessageDialog(null,"Fallito il caricamento dei driver SQL.","ERRORE CARICAMENTO DRIVER SQL",JOptionPane.ERROR_MESSAGE);
          				    }
                    try {
                    Connection con=null;
                    String postazione=selectedItem;
                    String tempo_min=data_inizio;
                    String tempo_max=data_fine;
                    non_partire=0;
                    //DB BECHELLI Connessione col database in cui vengono specificati url, nome utente, password
                    con = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/master", "sa", "sa");                        
       
                    Statement select = con.createStatement();
                    Statement select1=con.createStatement();
                    if(postazione.equalsIgnoreCase("Tutte")){
                    // Query SQL 
                    String SQL_rows="SELECT count (postazione) FROM log_lavorazione_baie where data_ora>='" +tempo_min+"' and data_ora<='" +tempo_max+ "%'";
                    String SQL= "SELECT * FROM log_lavorazione_baie where data_ora>='" +tempo_min+"' and data_ora<='" +tempo_max+ "%'ORDER BY data_ora DESC";
                    //caricamento query SQL
                    ResultSet result2=select1.executeQuery(SQL_rows);
                    result2.next();
                    int ris_row=result2.getInt(1);
                     if(ris_row==0){
                        JOptionPane.showMessageDialog(null,"Non è stato trovato nessun dato.\nSelezionare un nuovo intervallo e riprovare.","NESSUN DATO",JOptionPane.WARNING_MESSAGE);
                        non_partire=1;
                    } 
                    if(ris_row>65530){
                        JOptionPane.showMessageDialog(null,"I dati trovati sono più di 65530.\nExcel non riesce a visualizzarli interamente.\nSelezionare un intervallo minore e riprovare.","DATI MAGGIORI DI 65530",JOptionPane.WARNING_MESSAGE);
                        non_partire=1;
                    } 
                    // n° di righe dinamico
                    rows = ris_row;
                    result1 = select.executeQuery(SQL);
                    }
                    else{
                    String SQL_rows_post="SELECT count (postazione) FROM log_lavorazione_baie where postazione='"+postazione+"' and data_ora>='" +tempo_min+"' and data_ora<='" +tempo_max+ "%'";
                    String SQL_post= "SELECT * FROM log_lavorazione_baie where postazione='"+postazione+"' and data_ora>='" +tempo_min+"' and data_ora<='" +tempo_max+ "%'ORDER BY data_ora DESC";
              	//caricamento query SQL
                    ResultSet result2=select1.executeQuery(SQL_rows_post);
                    result2.next();
                    int ris_row=result2.getInt(1);
                    if(ris_row==0){
                        JOptionPane.showMessageDialog(null,"Non è stato trovato nessun dato per la postazione selezionata.\nSelezionare un nuovo intervallo e riprovare.","NESSUN DATO",JOptionPane.WARNING_MESSAGE);
                        non_partire=1;
                    } 
                    if(ris_row>65530){
                        JOptionPane.showMessageDialog(null,"I dati trovati per la postazione selezionata sono più di 65530.\nExcel non riesce a visualizzarli interamente.\nSelezionare un intervallo minore e riprovare.","DATI MAGGIORI DI 65530",JOptionPane.WARNING_MESSAGE);
                        non_partire=1;
                    } 
                    // n° di righe dinamico
                    rows = ris_row;
                    result1 = select.executeQuery(SQL_post);
                    } }
                   
                    catch (Exception e) {
                    e.printStackTrace();
                    JOptionPane.showMessageDialog(null,"Connessione col database fallita","ERRORE CONNESSIONE DATABASE",JOptionPane.ERROR_MESSAGE);     
                                        } 
                     if(non_partire==0){
                    // vettore dati tabella
    		Vector data = new Vector(0, 1);
    		// vettore colonne tabella
    		Vector columnNames = new Vector(0, 1);
                    
    		// popolo la tabella
    		for(int i = 0; i < rows; i++) {
               try {
                    // vettore singola riga tabella
                    Vector row = new Vector();
                    result1.next();
                    for (int j = 1; j <= columns; j++) {
                        try {
                            row.addElement(result1.getString(j));
                            pw.print(result1.getString(j)+";");
                            
                            } 
                            catch (SQLException ex) {
                                                     Logger.getLogger(ControlloLog.class.getName()).log(Level.SEVERE, null, ex);
                                                      }
                    }
                    data.addElement(row);
                    pw.print("\n");
                     } 
                    catch (SQLException ex) {
                                         Logger.getLogger(ControlloLog.class.getName()).log(Level.SEVERE, null, ex);
                                             }
    		}
    		// intestazioni colonne
    		for(int i = 0; i < columns; i++) {
    			columnNames.addElement(labels[i]);
    		}
    		// modello dati della tabella
    		DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);
    		// modello attributi delle colonne
    		DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
    		for(int i = 0; i < columns; i++) {
    			// modello attributi colonna singola
    			TableColumn column = new TableColumn(i, widths[i]);
    			column.setHeaderValue(labels[i]);
    			columnModel.addColumn(column);
    		}
    		// la tabella
    		JTable table = new JTable(tableModel, columnModel);
                    table.setPreferredScrollableViewportSize(new Dimension(700, 600));
    		JScrollPane scroll = new JScrollPane(table);
    		///////////////////////////////////////////////////
    		getContentPane().add(scroll);
    		pack(); 
                    //setVisible(true);
                    DesktopPane desktop;
     desktop.add(scroll);
    	}}

  2. #2
    Ho sostituito:

    codice:
    DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);
    con

    codice:
    TableModel dataModel = new AbstractTableModel() {
              public int getColumnCount() { return 6; }
              public int getRowCount() { return rows;}
              public Object getValueAt(int row, int col) { return new Integer(row*col); }
          };
    però dovrei inserire i dati nella tabella....con questa riga:

    public Object getValueAt(int row, int col) { return new Integer(row*col); }

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da xxdavide84xx
    Io ho questa tabella, solo che ho il problema che le caselle sono modificabili e le colonne sono intercambiabili fra loro.
    Ed inoltre se io voglio creare una nuova tabella mi dovrebbe sovrascrivere la vecchia, invece mi rimane visualizzata SEMPRE la prima tabella...

    però dovrei inserire i dati nella tabella....con questa riga:

    public Object getValueAt(int row, int col) { return new Integer(row*col); }
    Potresti spendere almeno 1 ora del tuo tempo per documentarti su cosa è e come si usa un "table model"??

    Creating a Table Model

    Originariamente inviato da xxdavide84xx
    le colonne sono intercambiabili fra loro.
    Cosa intendi?? Forse quella funzionalità per cui si possono "trascinare" le colonne e spostarle più a sinistra/destra?? Si può disabilitare:

    table.getTableHeader().setReorderingAllowed(false) ;

    In genere comunque il reordering non crea problemi. Esiste una mappatura interna che mappa la posizione fisica della colonna sulla posizione "logica" nel table model. Quindi, salvo per gestioni e cose particolari, il riordinamento è indipendente dal table model.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.