Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [JAVA] Redirigere l'output di una interrogazione sul DB in una JTable

    Allora ho una GUI (progetto con netbeans), c'è un bottone 'esegui query' e una tabella, la larghezza della tabella è di una colonna.
    Questo è il codice associato al bottone
    codice:
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
            initComponents();
            Connection con;
            Statement st;
            String query, conString;
            ResultSet rs;
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                conString="jdbc:odbc:localhost";
                con=DriverManager.getConnection(conString, "mariano", "pass");
                st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    	    query="select * from articolo";
                rs = st.executeQuery(query);
                rs.next(); 
                while (!rs.isAfterLast()) {
                    //System.out.println(rs.getInt(CodArt));
                    System.out.println(rs.getString("Descrizione"));
                    rs.next();
                }
            } catch (Exception e) {
                System.out.println("Qualcosa è andato storto: "+e.getMessage());
            }
        }
    Quando clicco il tasto 'esegui query' tutto và per il verso giusto e l'output dell'interrogazione viene mostrato nell'output. Ora se volessi che ogni riga del DB venisse inserita in una nuova riga della Jtable come faccio?

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    JTable tuaTabella = new JTable(matriceRecorset, arrayNomiColonne);

    è solo uno degli innumerevoli modi per farlo. Guardati i vari costruttori di JTable

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    Originariamente inviato da kuarl
    JTable tuaTabella = new JTable(matriceRecorset, arrayNomiColonne);

    è solo uno degli innumerevoli modi per farlo. Guardati i vari costruttori di JTable
    questo codice scritto da te lo devo mettere al posto del system out nel mio codice?

  4. #4
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    no... devi popolare una matrice con i risultati della query, poi ti crei anche un array contenente i nomi delle colonne (stringhe) e li passi come parametro al costruttore di jtable

    poi da qualche parte devi aggiungere jtable all'interno di un pannello o qualcos'altro che hai destinato a contenere la tabella

  5. #5
    Anch'io ho un problema simile, dovrei appunto creare una grafica che mi proponga il risultato di una query
    Suppongo che la cosa migliore sia creare una jTable e popolarla con il risultato della query

    Dando un okkiata alle API ho trovato vari costruttori, ma nessuno come quello ke sostieni tu kuarl, ke dovrebbe somigliare a: JTable(ResultSet, Array)
    Il costruttore ke più si avvicina è:
    JTable(Vector rowData, Vector columnNames)
    Constructs a JTable to display the values in the Vector of Vectors, rowData, with column names, columnNames.
    Ke xò evidentemente nn è la stessa cosa...

    Ma poi sopratutto mi si pone un altro problema: io uso netbeans 5.5, e x creare la grafica faccio drag&drop degli elementi swing dai menu appositi
    Netbeans mi genera in automatico il codice relativo, solo ke me lo mette in una zona di codice azzura che non si può modificare :master:
    Quindi nn saprei come fare a creare la tabella già popolata

    Se potete aiutarmi plz

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da sharkfox
    Ma poi sopratutto mi si pone un altro problema: io uso netbeans 5.5, e x creare la grafica faccio drag&drop degli elementi swing dai menu appositi
    Netbeans mi genera in automatico il codice relativo, solo ke me lo mette in una zona di codice azzura che non si può modificare :master:
    Quindi nn saprei come fare a creare la tabella già popolata

    Se potete aiutarmi plz
    Prova a fare a meno di utilizzare NetBeans... apri il sorgente con il blocco note e modificalo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Ok ho risolto il problema della "zona azzurra" e ora riesco a caricare i dati ke mi servono

    Mi si pone ora invece il problema id far sì ke alcune colonne della mia table siano editabili ma le altre no
    Ho cercato parekkio nei vari metodi della jTable ma nn trovo nulla di opportuno
    Sapete se esiste qlcs?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se tu avessi cercato meglio, avresti trovato informazioni sul TableModel e sul relativo metodo isCellEditable().

    Il Tutorial della Sun sulle tabelle è molto chiaro in proposito (trovi il link nella documentazione ufficiale della classe JTable).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Cavolo anche tu che tiri fuori ste robe
    Io non ci sto capendo più nulla

    Tale metodo dice:
    boolean isCellEditable(int rowIndex, int columnIndex)
    Returns true if the cell at rowIndex and columnIndex is editable.

    Alias è solo un metodo che mi dice se la tal cella X, Y è editabil e o no, come può questo metodo SETTARE l'editabilità??

    E sopratutto sto diabolico TableModel cos'è e come si imposta? Mi dicono che devo overridare il metodo ma nn ho la minima idea di come si faccia

    Mi potresti fare un esempio concreto di codice e spiegarmi dove lo devo mettere per favore?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Credo che il problema sia di fondo: se sei alle prime armi con l'utilizzo delle JTable, la cosa più ovvia da fare è seguire, per lo meno, il tutorial della Sun.
    Come ti avevo già detto nel mio post precedente, il link lo trovavi nella documentazione della classe JTable.
    La prima riga della documentazione dice:
    The JTable is used to display and edit regular two-dimensional tables of cells. See How to Use Tables in The Java Tutorial for task-oriented documentation and examples of using JTable.
    In questo tutorial viene spiegato, passo passo, come costruire una JTable che abbia delle determinate caratteristiche (fra le quali c'è appunto quella di rendere alcune colonne non editabili vedi qui).

    In questo tutorial viene anche spiegato che una JTable lavora secondo un TableModel (che rappresenta i dati della tabella) e un Renderer (che dice come questi dati devono essere visualizzati).

    Se il TableModel dice che una particolare cella non deve essere editabile, la JTable visualizza tale cella come non editabile.

    Visto che il TableModel lo devi definire tu, sarai sempre tu che definisci il metodo isCellEditable() (override significa "ridefinizione": il metodo astratto esiste già e tu lo ridefinisci, ma questi sono concetti di base della programmazione Object Oriented).

    L'esempio concreto ce l'hai sempre nel tutorial... puoi scaricare il codice completo dell'esempio che portano avanti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.