Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Entity, query, Jtable

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    4

    Entity, query, Jtable

    Ciao a tutti.

    Sono nuovo e, sto cercando di imparare un po' di Java quindi vi prego di avere pazienza se magari faccio domande.... stupide.

    Veniamo al dunque.

    Sto usando Netbeans (e qualche volta Eclipse) per provare a fare un semplice programma che si interfaccia con un db.
    Il database l'ho migrato da MSAccess a MySql. Quindi il prg si collega ad un db mysql. Fin qua funziona tutto.

    Poi, con Netbeans ho creato (lo fa lui automagicamente) delle EntityClasses from Table. Gli ho indicato quali tabelle utilizzare e mi ha creato le 2 classi relative alle 2 tabelle.

    Quindi, ho inserito una form con dentro una jtable alla quale volevo associare la visualizzazione dei dati. Se, gli faccio associare una tabella o l'altra (complete)..... tutto bene, ma se voglio far visualizzare una query diversa dal "select * from"... non so come fare.

    Il codice che netbeans ha creato automagicamente non è modificabile.


    Spero di essermi spiegato.

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Come sempre, io dico la mia.
    Dici che stati imparando Java. Ok.
    Dici che stai usando NetBeans: chi si avvicina per la prima volta al linguaggio Java dovrebbe evitare come la peste qualunque tipo di ambiente RAD.
    Dici che stai cominciando da una "semplice" applicazione che si interfaccia ad un DB: direi che è piuttosto azzardato per chiunque si stia avvicinando a Java... non credo che l'argomento JDBC (che riguarda i DB) possa essere affontato prima di avere un'esperienza minima di diversi mesi di studio del linguaggio...

    Il mio consiglio?
    Dimentica NetBeans per almeno un anno. Prendi il Blocco Note di Windows o magari un editor con text-highlight. Usa gli strumenti di compilazione ed esecuzione da riga di comando (javac / java). Impara i concetti fondamentali (OOP a parte, sintassi, costrutti, convenzioni di nomenclatura, packaging, classi e metodi del core standard, Swing, Threading e Networking). Solo per questi ne hai per un anno. Poi comincia a vedere le api della JDBC.

    Altrimenti non andrai da nessuna parte.


    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

  3. #3
    Semplicemente ti riscrivi il modello della tabella a tuo piacimento

    Ti faccio un esempio: Una persona che ha un indirizzo, quindi una classe persona che contiene una classe indirizzo (tanto così per associare due classi)

    Address.java

    codice:
    public class Address {
    
        private String street;
        private int number;
    
        public Address(String street, int number) {
            this.street = street;
            this.number = number;
        }
    
        public int getNumber() {
            return number;
        }
    
        public String getStreet() {
            return street;
        }
        
        // riscrivo il metodo toString per poter visualizzare poi l'oggetto nella JTable
        @Override
        public String toString() {
           return this.street + " " + this.number;
        }
    }
    Person.java

    codice:
    public class Person {
    
        private String name;
        private String surname;
        private Address address;
    
        public Person(String name, String surname, Address address) {
            this.name = name;
            this.surname = surname;
            this.address = address;
        }
    
        public Address getAddress() {
            return address;
        }
    
        public String getName() {
            return name;
        }
    
        public String getSurname() {
            return surname;
        }
    }
    Ora, ti crei il modello della tabella a piacimento, CustomizedTableModel.java

    codice:
    import java.util.List;
    import javax.swing.table.AbstractTableModel;
    
    public class CustomizedTableModel extends AbstractTableModel{
    
        public List<Person> people;
    
        public CustomizedTableModel(List<Person> people) {
            this.people = people;
        }
    
        @Override
        public String getColumnName(int column) {
    
            String columName = new String();
    
            switch(column){
    
                case 0:
                    columName = "Nome";
                break;
    
                case 1:
                    columName = "Cognome";
                break;
    
                case 2:
                    columName = "Indirizzo";
                break;
            }
    
            return columName;
        }
    
        @Override
        public int getRowCount() {
            return this.people.size();
        }
    
        @Override
        public int getColumnCount() {
            return 3;
        }
    
        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
    
            Person person = this.people.get(rowIndex);
    
            Object value = new Object();
    
            switch(columnIndex){
    
                case 0:
                    value = person.getName();
                break;
    
                case 1:
                    value = person.getSurname();
                break;
    
                case 2:
                    value = person.getAddress();
                break;
            }
    
            return value;
        }
    
    }
    Ora semplicemente se vuoi visualizzare queste persone e il relativo indirizzo basta fare così

    Nella tua interfaccia grafica:

    codice:
    // crei la tabella 
    JTable table = new JTable();
    
    // creo una lista di persone
    List<Person> people = new ArrayList<Person>();
    
    // popolo la lista
    people.add(new Person("Nome1", "Cognome1", new Address("Via Test", 1)));
    people.add(new Person("Nome2", "Cognome2", new Address("Via Test", 2)));
    people.add(new Person("Nome3", "Cognome3", new Address("Via Test", 3)));
    
    // creo il modello "personalizzato" per la JTable
    CustomizedTableModel model = new CustomizedTableModel(people);
    
    // imposto il modello alla JTable table
    table.setModel(model);
    L'output è come quello nell'immagine allegata

    Saluti
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    4
    Grazie per la spiegazione.
    Vedo di studiarmela per bene.


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.