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

    jTable e jPanel in Java help un problema come risolvo?

    Ciao a tutti!
    ho un problema con un programma java, in pratica ho 2 jPanel uno con jLabel e jTextfield e jButton, l'altro con una jTable.
    io vorrei che dopo aver inserito i mei input e ho finito di aggiungere dati tramite il primo jbutton cliccassi sul secondo jbutton e facesse aparire il secondo jPanel. come faccio? infine ho un problema ma per la jTabel se voglio personalizzare come voglio devo creare una classe apposta con una matrice di righe e colonne che voglio io? perchè vorrei che l'input del nome del primo jPanel aggiugesse una colonna alla jTable con il nome in altro della colonna appunto il nome che gli scrivo di input. e poi come nome righe vorrei inserire il testo che inserisco in alcune jlabel del primo jpanel. se tutto questo è possibile?
    infine nelle colonne che seguono alla prima collonna vorrei stamparci dei risultati di calcoli messi in una classe e infine nell'ultima colonna ci stampo la somma dei valori delle collonne che la precedono escludendo oviamente la prima colonna.

  2. #2
    Comincia con il leggerti gli ActionListener ed associarne uno al click del pulsante per visualizzare il JPanel.
    Il JPanel lo nascondi/visualizzi con il metodo setVisible, oppure se avessi programmato bene la tua GUI, potresti aggiungerlo e rimuoverlo dal container tramite add e remove.

    Infine questo è un buon tutorial per iniziare a studiarti leJTable.

    Sviluppa il tuo codice e se hai problemi postaceli
    lolide
    Java Programmer

    Informati

  3. #3
    grazie mille per lo meno sono riuscito nel far visualizzare i due jpanel uno prima dell'altro. solo che mi manca capire come aggiungere come vorrei io le colonne e come stamparci i risultati dei metodi di classi.

  4. #4

    problemi vari in java come risolvo?

    mo posto un po' di codice perchè non risolto i problemi anche se sembrava che io avessi postato che li avevo risolto invece no, sopratutto non sembra che faccia ciò che voglio.

    comunque ho questi obbiettivi da raggiungere:

    1) visualizzare prima un jpanel form e poi la framewiew se è possibile visualizzare entrambi in quest'ordine.
    comunque visualizzare entrambi.
    2) settare i nomi delle colonne di una jTable determinati in un metodo che posto in grasetto.
    3) vedi 2 solo che devo farlo per le righe.
    4) stampare nella jTable i risultati dei metodi della classe calcoli e classe reparto che posto in grassetto. utilizzando dei bottoni apositi.

    classe reparto:

    codice:
    package analisiperreparto;
    
    public class reparto extends Object {
    
        String nome;
        double vendita, costovenduto, stipendieonerisociali, stipendiodirezionale, ammortamento;
        double trasporto, mesi, tasso, costiammortizare, pubblicita, imposte, amministrazione, consulenza;
    
        public reparto(double mesi, double tasso, String nome, double vendita, double costovenduto, double stipendieonerisociali, double stipendiodirezionale, double ammortamento, double trasporto, double pubblicita, double imposte, double amministrazione, double consulenza) {
            this.nome = nome;
            this.tasso = tasso;
            this.mesi = mesi;
            this.vendita = vendita;
            this.costovenduto = costovenduto;
            this.stipendieonerisociali = stipendieonerisociali;
            this.stipendiodirezionale = stipendiodirezionale;
            this.ammortamento = ammortamento;
            this.trasporto = trasporto;
            this.pubblicita = pubblicita;
            this.imposte = imposte;
            this.amministrazione = amministrazione;
            this.consulenza = consulenza;
        }
    
        public double getMesi() {
            return mesi;
        }
    
        public double getTasso() {
            return tasso;
        }
    
        public double getamministrazoneConsulenza() {
            return getAmministrazione() + getConsulenza();
        }
    
        public double getAmministrazione() {
            return amministrazione;
        }
    
        public double getConsulenza() {
            return consulenza;
        }
    
        public double getImposte() {
            return imposte;
        }
    
        public double getPubblicita() {
            return pubblicita;
        }
    
        public double getStipendiodirezionale() {
            return stipendiodirezionale;
        }
    
        public double getcostiAmmortizare() {
            return costiammortizare;
        }
    
        public double getAmmortamento() {
            return (ammortamento * getcostiAmmortizare()) / 100;
        }
    
        public double getpublicitaimpostestipendioDirezionale() {
            return getPubblicita() + getImposte() + getStipendiodirezionale();
        }
    
        public double getStipendieonerisociali() {
            return stipendieonerisociali;
        }
    
        public double getTrasporto() {
            return trasporto;
        }
    
        public double getcostoVenduto() {
            return costovenduto;
        }
    
        public String getNome() {
            return nome;
        }
    
        public double getVendita() {
            return vendita;
        }
    
        public double getMargineLordo() {
            return getVendita() - getcostoVenduto();
        }
    
        public double getinterresseFiguartivo() {
            double x = 0;
            x = (getTasso() * getMesi() * getStipendiodirezionale()) / (12 * 100);
            return x;
        }
    
        public double getcostiDiretti() {
            double x = 0;
            x += getStipendieonerisociali() + getAmmortamento() + getinterresseFiguartivo();
            return x;
        }
    
        public double getcostiIndiretti() {
            double x = 0;
            x += getamministrazoneConsulenza() + getpublicitaimpostestipendioDirezionale() + getTrasporto();
            return x;
        }
    
        public double getcostiDistribuzione() {
            return getcostiDiretti() + getcostiIndiretti();
        }
    
    public double getutileNetto() {
            return getMargineLordo() - getcostiDistribuzione();
        }
    }
    classe calcoli:
    codice:
    package analisiperreparto;
    
    public class calcoli {
    
        static final int MAXREPARTI = 20;
        int nReparti, righe, colonne;
        reparto[] reparti;
        Object[][] o = new Object[righe][colonne];
    
        public calcoli() {
            this.nReparti = 0;
            this.colonne = 2;
            this.righe = 13;
            this.reparti = new reparto[MAXREPARTI];
        }
    
        public int getColonne() {
            return colonne + getnReparti();
        }
    
        public int getRighe() {
            return righe;
        }
    
        public reparto[] getReparti() {
            return reparti;
        }
    
        public int getnReparti() {
            return nReparti;
        }
    
        public Object getValore(int r, int c) {
            return o[r][c];
        }
    
        public void setValore(int r, int c, Object val) {
            o[r][c] = val;
        }
        public void setnomiColonne() {
            for (int i = 0; i < nReparti; i++) {
                String nome = reparti[i].getNome();
                String  nomicolonne[] = {"descrizione", nome, "totali"};
            }
        }
    
        public void setnomiRighe() {
            String nomirighe[] = {"vendite:", "costo del venduto:", "margine lordo:", "stipendi e oneri sociali=", "ammortamento=", "interesse figurativo=", "costi diretti:", "trasporto=", "publicità=", "amministrazione=", "costi indiretti:", "costi di distribuzione:", "utile netto:"};
        }
    
        public void aggiungiReparto(reparto rap) {
            if (nReparti < MAXREPARTI) {
                reparti[nReparti++] = rap;
            } else {
                System.err.println("rag max reparti");
            }
    
        }
    
        public double getamministrazoneConsulenza() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getamministrazoneConsulenza()) * nReparti;
            }
            return x;
        }
    
        public double getinterresseFiguartivo() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getinterresseFiguartivo()) * nReparti;
            }
            return x;
        }
    
        public double getAmmortamento() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getAmmortamento()) * nReparti;
            }
            return x;
        }
    
        public double getpublicitaimpostestipendioDirezionale() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getpublicitaimpostestipendioDirezionale()) * nReparti;
            }
            return x;
        }
    
        public double getStipendieonerisociali() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getStipendieonerisociali()) * nReparti;
            }
            return x;
        }
    
        public double getTrasporto() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getTrasporto()) * nReparti;
            }
            return x;
        }
    
        public double getCostiDiretti() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostiDiretti()) * nReparti;
            }
            return x;
        }
    
        public double getCostiIndiretti() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostiIndiretti()) * nReparti;
            }
            return x;
        }
    
        public double getcostiDistribuzione() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostiDistribuzione()) * nReparti;
            }
            return x;
        }
    
        public double getMargineLordo() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getMargineLordo()) * nReparti;
            }
            return x;
        }
    
        public double getUtileNetto() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getutileNetto()) * nReparti;
            }
            return x;
        }
    
        public double getVedite() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getVendita()) * nReparti;
            }
            return x;
        }
    
        public double getcostodelVenduto() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostoVenduto()) * nReparti;
            }
            return x;
        }
    
    }

  5. #5
    jPanel form aggiungiReparto:
    codice:
    package analisiperreparto;
    
    import java.text.DecimalFormat;
    
    public class aggiungiReparto extends javax.swing.JPanel {
    
        DecimalFormat df = new DecimalFormat("#,##0.00");
        String nome;
        double vendita, costovenduto, stipendieonerisociali, stipendiodirezionale, ammortamento;
        double trasporto, mesi, tasso, costiammortizare, pubblicita, imposte, amministrazione, consulenza;
        calcoli c = new calcoli();
        reparto rap;
    
      
        public aggiungiReparto() {
            initComponents();
        }
    
        public reparto getReparto() {
            return rap;
        }
    
        private void btnAggiungiActionPerformed(java.awt.event.ActionEvent evt) {                                            
            try {
                vendita = new Double(txtvendita.getText());
                costovenduto = new Double(txtcostovenduto.getText());
                stipendieonerisociali = new Double(txtstip.getText());
                stipendiodirezionale = new Double(txtstipd.getText());
                ammortamento = new Double(txtammo.getText());
                costiammortizare = new Double(txtcoamm.getText());
                trasporto = new Double(txttrasp.getText());
                pubblicita = new Double(txtpubblicita.getText());
                imposte = new Double(txtimposte.getText());
                amministrazione = new Double(txtamministrazione.getText());
                consulenza = new Double(txtconsulenza.getText());
                tasso = new Double(txttasso.getText());
                mesi = new Double(txtmesi.getText());
            } catch (NumberFormatException e) {
                System.err.println("inserisci solo numeri");
                txtvendita.setText("");
                txtcostovenduto.setText("");
                txtstip.setText("");
                txtstipd.setText("");
                txtmesi.setText("");
                txttasso.setText("");
                txtammo.setText("");
                txtcoamm.setText("");
                txttrasp.setText("");
                txtpubblicita.setText("");
                txtimposte.setText("");
                txtamministrazione.setText("");
                txtconsulenza.setText("");
                txtvendita.grabFocus();
                txtcostovenduto.grabFocus();
                txtstip.grabFocus();
                txtstipd.grabFocus();
                txtammo.grabFocus();
                txtcoamm.grabFocus();
                txttrasp.grabFocus();
                txtpubblicita.grabFocus();
                txtimposte.grabFocus();
                txtamministrazione.grabFocus();
                txtconsulenza.grabFocus();
                txtmesi.grabFocus();
                txttasso.grabFocus();
                return;
    
            }
            if (txttasso.getText().isEmpty() && txtmesi.getText().isEmpty() && txtnome.getText().isEmpty() && txtvendita.getText().isEmpty() && txtcostovenduto.getText().isEmpty() && txtstip.getText().isEmpty() && txtstipd.getText().isEmpty() && txtammo.getText().isEmpty() && txtcoamm.getText().isEmpty() && txttrasp.getText().isEmpty() && txtpubblicita.getText().isEmpty() && txtimposte.getText().isEmpty() && txtamministrazione.getText().isEmpty() && txtconsulenza.getText().isEmpty()) {
                System.err.println("inserisci i valori richiesti");
                txtvendita.grabFocus();
                txtcostovenduto.grabFocus();
                txtstip.grabFocus();
                txtstipd.grabFocus();
                txtammo.grabFocus();
                txtcoamm.grabFocus();
                txttrasp.grabFocus();
                txtpubblicita.grabFocus();
                txtimposte.grabFocus();
                txtamministrazione.grabFocus();
                txtconsulenza.grabFocus();
                txtnome.grabFocus();
                txtmesi.grabFocus();
                txttasso.grabFocus();
                return;
            } else if (txttasso.getText().isEmpty() || txtmesi.getText().isEmpty() || txtnome.getText().isEmpty() || txtvendita.getText().isEmpty() || txtcostovenduto.getText().isEmpty() || txtstip.getText().isEmpty() || txtstipd.getText().isEmpty() || txtammo.getText().isEmpty() || txtcoamm.getText().isEmpty() || txttrasp.getText().isEmpty() || txtpubblicita.getText().isEmpty() || txtimposte.getText().isEmpty() || txtamministrazione.getText().isEmpty() || txtconsulenza.getText().isEmpty()) {
                System.err.println("inserisci i valori mancanti");
                txtvendita.grabFocus();
                txtcostovenduto.grabFocus();
                txtstip.grabFocus();
                txtstipd.grabFocus();
                txtammo.grabFocus();
                txtcoamm.grabFocus();
                txttrasp.grabFocus();
                txtpubblicita.grabFocus();
                txtimposte.grabFocus();
                txtamministrazione.grabFocus();
                txtconsulenza.grabFocus();
                txtnome.grabFocus();
                txtmesi.grabFocus();
                txttasso.grabFocus();
                return;
            } else {
                rap = new reparto(tasso, mesi, txtnome.getText(), vendita, costovenduto, stipendieonerisociali, stipendiodirezionale, ammortamento, trasporto, pubblicita, imposte, amministrazione, consulenza);
                c.aggiungiReparto(rap);
            }
        }                                           
    
        private void btnavantiActionPerformed(java.awt.event.ActionEvent evt) {                                          
            this.setVisible(false);
        }                                         
    
        private void calcolaActionPerformed(java.awt.event.ActionEvent evt) {                                        
            double o = rap.getAmmortamento();
            double p = rap.getStipendieonerisociali();
            double q = rap.getamministrazoneConsulenza();
            double s = rap.getMargineLordo();
            double t = rap.getpublicitaimpostestipendioDirezionale();
            double u = rap.getTrasporto();
            double x = rap.getVendita();
            double y = rap.getcostiDiretti();
            double w = rap.getcostiIndiretti();
            double z = rap.getutileNetto();
            double k = rap.getcostiDistribuzione();
            double j = rap.getcostoVenduto();
            double var = rap.getinterresseFiguartivo();
        }

  6. #6
    wiew:
    codice:
    package analisiperreparto;
    
    
    import org.jdesktop.application.Action;
    import org.jdesktop.application.ResourceMap;
    import org.jdesktop.application.SingleFrameApplication;
    import org.jdesktop.application.FrameView;
    import org.jdesktop.application.TaskMonitor;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.text.DecimalFormat;
    import javax.swing.Timer;
    import javax.swing.Icon;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableModel;
    
    /**
     * The application's main frame.
     */
    public class AnalisiperrepartoView extends FrameView {
    
        DecimalFormat df = new DecimalFormat("#,##0.00");
        calcoli c = new calcoli();
        aggiungiReparto ap;
        TableModel tm;
    
        public AnalisiperrepartoView(SingleFrameApplication app) {
            super(app);
    
            tm = new AbstractTableModel() {
    
                public int getRowCount() {
                    return c.getRighe();
                }
    
                public int getColumnCount() {
                    return c.getColonne();
                }
                public Object getValueAt(int rowIndex, int columnIndex) {
                    return c.getValore(rowIndex, columnIndex);
                }
    
                @Override
                public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
                    c.setValore(rowIndex, rowIndex, aValue);
                }
            };
    
        private void calcolaActionPerformed(java.awt.event.ActionEvent evt) {                                        
            double a = c.getCostiDiretti();
            double b = c.getCostiIndiretti();
            double d = c.getcostiDistribuzione();
            double e = c.getMargineLordo();
            double f = c.getUtileNetto();
            double g = c.getAmmortamento();
            double h = c.getStipendieonerisociali();
            double i = c.getamministrazoneConsulenza();
            double l = c.getpublicitaimpostestipendioDirezionale();
            double m = c.getTrasporto();
            double n = c.getVedite();
            double var = c.getinterresseFiguartivo();
            double vardue = c.getcostodelVenduto();
        }                                       
    
        private void btnaggiungiRepartoActionPerformed(java.awt.event.ActionEvent evt) {                                                   
            ap = new aggiungiReparto();
            c.aggiungiReparto(ap.getReparto());
            ap.setVisible(true);
            ap.disable();
        }

  7. #7
    codici in grasetto:

    classe reparto:

    codice:
     
    
    
        publicdouble getamministrazoneConsulenza() {
            return getAmministrazione() + getConsulenza();
        }
    
     
        public double getAmmortamento() {
            return (ammortamento * getcostiAmmortizare()) / 100;
        }
    
        public double getpublicitaimpostestipendioDirezionale() {
            return getPubblicita() + getImposte() + getStipendiodirezionale();
        }
    
        public double getStipendieonerisociali() {
            return stipendieonerisociali;
        }
    
        public double getMargineLordo() {
            return getVendita() - getcostoVenduto();
        }
    
        public double getinterresseFiguartivo() {
            double x = 0;
            x = (getTasso() * getMesi() * getStipendiodirezionale()) / (12 * 100);
            return x;
        }
    
        public double getcostiDiretti() {
            double x = 0;
            x += getStipendieonerisociali() + getAmmortamento() + getinterresseFiguartivo();
            return x;
        }
    
        public double getcostiIndiretti() {
            double x = 0;
            x += getamministrazoneConsulenza() + getpublicitaimpostestipendioDirezionale() + getTrasporto();
            return x;
        }
    
        public double getcostiDistribuzione() {
            return getcostiDiretti() + getcostiIndiretti();
        }
    
        public double getutileNetto() {
            return getMargineLordo() - getcostiDistribuzione();
        }
    
    classe calcoli:
    codice:
    
        public double getamministrazoneConsulenza() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getamministrazoneConsulenza()) * nReparti;
            }
            return x;
        }
    
        public double getinterresseFiguartivo() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getinterresseFiguartivo()) * nReparti;
            }
            return x;
        }
    
        public double getAmmortamento() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getAmmortamento()) * nReparti;
            }
            return x;
        }
    
        public double getpublicitaimpostestipendioDirezionale() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getpublicitaimpostestipendioDirezionale()) * nReparti;
            }
            return x;
        }
    
        public double getStipendieonerisociali() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getStipendieonerisociali()) * nReparti;
            }
            return x;
        }
    
        public double getTrasporto() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getTrasporto()) * nReparti;
            }
            return x;
        }
    
        public double getCostiDiretti() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostiDiretti()) * nReparti;
            }
            return x;
        }
    
        public double getCostiIndiretti() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostiIndiretti()) * nReparti;
            }
            return x;
        }
    
        public double getcostiDistribuzione() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostiDistribuzione()) * nReparti;
            }
            return x;
        }
    
        public double getMargineLordo() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getMargineLordo()) * nReparti;
            }
            return x;
        }
    
        public double getUtileNetto() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getutileNetto()) * nReparti;
            }
            return x;
        }
    
        public double getVedite() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getVendita()) * nReparti;
            }
            return x;
        }
    
        public double getcostodelVenduto() {
            double x = 0;
            for (int i = 0; i < nReparti; i++) {
                x += (reparti[i].getcostoVenduto()) * nReparti;
            }
            return x;
        }
    

    infine sempre in grasetto i bottoni che devono eseguire i calcoli delle classi e poi mandare i risultati alla jTable che li stampa magari applicando il decimal format.

    Bottone calcola del jPanel form aggiungiReparto:


    codice:
     
    
    private void calcolaActionPerformed(java.awt.event.ActionEvent evt) {                                        
            double o = rap.getAmmortamento();
            double p = rap.getStipendieonerisociali();
            double q = rap.getamministrazoneConsulenza();
            double s = rap.getMargineLordo();
            double t = rap.getpublicitaimpostestipendioDirezionale();
            double u = rap.getTrasporto();
            double x = rap.getVendita();
            double y = rap.getcostiDiretti();
            double w = rap.getcostiIndiretti();
            double z = rap.getutileNetto();
            double k = rap.getcostiDistribuzione();
            double j = rap.getcostoVenduto();
            double var = rap.getinterresseFiguartivo();
        } 
    
    Bottone calcola della wiew:
    codice:
     
    
     private void calcolaActionPerformed(java.awt.event.ActionEvent evt) {                                        
            double a = c.getCostiDiretti();
            double b = c.getCostiIndiretti();
            double d = c.getcostiDistribuzione();
            double e = c.getMargineLordo();
            double f = c.getUtileNetto();
            double g = c.getAmmortamento();
            double h = c.getStipendieonerisociali();
            double i = c.getamministrazoneConsulenza();
            double l = c.getpublicitaimpostestipendioDirezionale();
            double m = c.getTrasporto();
            double n = c.getVedite();
            double var = c.getinterresseFiguartivo();
            double vardue = c.getcostodelVenduto();
        } 
    

  8. #8
    tolto che i bottoni li devo finire perchè ora ho solo instanziato i calcoli mi mancano le istruzioni per la visualizzazione dei risultati dove vorrei metterli ovvero nelle colonne aposite della jtable infatti questo non lo fare. sopratutto il bottone dell'aggiungi reparto deve essere visualizato per ogni reparto che aggiungo e ogni reparto rappresenta una colona. per quanto riguarda il bottone della wiew contiene calcoli che riguardano l'ultima colonna il totale ovvero ogni calcolo del reparto sommato a tutti i reparti.
    dopo aver risolto questi due problemi il mio programma dovrebbe in linea di massima essere finito o almeno per quello che richiede l'esercizio.

  9. #9
    comunque per quanto riguarda la tabella e che non so altri metodi per la tabel model che mi servono?
    infine i risultati sarebbe fico poterli riodinare secondo l'etichette della prima colonna della tabella in modo che ogni corispodente calcolo c'è una sua corispodente ettichetta dentro alla prima colonna della jTable.

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.