Zadávání dat do tabulky – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zadávání dat do tabulky – Java – Fórum – Programujte.comZadávání dat do tabulky – Java – Fórum – Programujte.com

 

11. 6. 2014   #1
-
0
-

Ahoj,

potřeboval bych poradit, jak vytvořit grafickou komponentu pro přidávání dat do tabulky.

Mám třídu výrobek  

package logika;

public class Vyrobek {

    private int kod;
    private String nazev;
    private String baleni;
    private int cena;

    public Vyrobek(int kod, String nazev, String baleni, int cena) {
        this.kod = kod;
        this.nazev = nazev;
        this.baleni = baleni;
        this.cena = cena;
    }
    public void print()
    {
        System.out.println( kod + nazev + baleni + cena);
        
    }

    public int getKod() {
        return kod;
    }

    public String getNazev() {
        return nazev;
    }

    public String getBaleni() {
        return baleni;
    }

    public int getCena() {
        return cena;
    }

    public void setKod(int kod) {
        this.kod = kod;
    }

    public void setNazev(String nazev) {
        this.nazev = nazev;
    }

    public void setBaleni(String baleni) {
        this.baleni = baleni;
    }

    public void setCena(int cena) {
        this.cena = cena;
    }

}

Pak mám seznam těchto výrobků v třídě Vyrobky  

package logika;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Vyrobky {

    private List<Vyrobek> vyrobky;

    public Vyrobky() {
        vyrobky = new ArrayList();
    }

    public List<Vyrobek> seznamVyrobku() {
        if (vyrobky.isEmpty()) {
            System.out.println("K dispozici nejsou žádné výrobky.");
            return null;
        }
        return vyrobky;
    }

    public boolean pridejVyrobek(Vyrobek vyrobek) {
        if(vyrobky.contains(vyrobek)) {
            System.out.println("Tento výrobek již v seznamu existuje.");
            return false;
        }
        if (!(vyrobky.add(vyrobek))) {
            System.out.println("Výrobek se nepodařilo přidat do seznamu.");
            return false;
        }
        return true;
    }

    public boolean odeberVyrobek(Vyrobek vyrobek) {
        if (!vyrobky.contains(vyrobek)) {
            System.out.println("Zadaný výrobek není v seznamu.");
            return false;
        }

        if (!(vyrobky.add(vyrobek))) {
            System.out.println("Výrobek se nepodařilo odebrat ze seznamu.");
            return false;
        }
        return true;
    }
    public int pocet()       
    {
       return vyrobky.size();
    }
    
    public Vyrobek getPolozka(int index)         
    {
        return vyrobky.get(index);
    }

    void vypisSeznam() {
        for(Vyrobek vyrobek : vyrobky){
            vyrobek.print();
            System.out.println();   
        } 
    }
    


}

Pak mám model tabulky  

package ui;

import javax.swing.table.AbstractTableModel;
import logika.Vyrobky;
import logika.Vyrobek;


/**
 * Write a description of class ModelTabulky here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class ModelTabulky extends AbstractTableModel
    {
     private Vyrobky vyrobky ;   
     String [] zahlaviSloupcu = {"Kód", "Název", "Balení", "Cena"};
     
     public ModelTabulky (Vyrobky vyrobky) {
     this.vyrobky = vyrobky ;    
     }
     
    @Override
     public String getColumnName( int col) {
         return zahlaviSloupcu[col];   
     }
     
     public int getRowCount() {
         return vyrobky.pocet();   
     }
     
     public int getColumnCount() {
         return 4;   
     }
     
   
       
     public Object getValueAt(int row, int col) {
          // naplneni seznamu
    
        Vyrobek vyrobek = (Vyrobek)vyrobky.getPolozka(row);
        switch (col) {
            case 0 : return (vyrobek.getKod());
            case 1 : return (vyrobek.getNazev());
            case 2 : return (vyrobek.getBaleni());
            case 3 : return (vyrobek.getCena());
            default : return null;
         }    
           
     }
     @Override
     public boolean isCellEditable(int radek, int sloupec) {
         switch (sloupec) {
             case 0: return true;
             case 1: return true;
             case 2: return true;
             case 3: return true;
             default: return false;
         }
     }
     
    @Override
     public void setValueAt(Object novaHodnota, int radek, int sloupec) {
         System.out.println("setValueAt "+radek+" "+sloupec+" - "+novaHodnota);
         Vyrobek vyrobek = (Vyrobek)vyrobky.getPolozka(radek);
         switch (sloupec) {
             case 0: vyrobek.setKod((int)novaHodnota); break;
             case 1: vyrobek.setNazev((String)novaHodnota); break;
             case 2: vyrobek.setBaleni((String)novaHodnota); break;
             case 3: vyrobek.setCena((int)novaHodnota); break;
             default: ;
         }
         
     }
     
      
    }
    
    

No a potřeboval bych komponentu, která by měla 4 pole (kod, nazev, baleni, cena) s JButtonem (Přidat). Po stisknutí buttonu by se přidala položka do tabulky jako nový výrobek.

Omlouvám se za jakkoukoliv chybu, jsem v tomhle amatér, ale potřebuju to, je to moje část práce na školním týmovém projektu. A nerad bych aby celej tým pohořel kvůli mojí neschopnosti.

Dík

Nahlásit jako SPAM
IP: 2001:718:1e02:9116:7869:c...–
Kit+15
Guru
11. 6. 2014   #2
-
0
-

#1 merobijec
Promiň, ale k čemu tam máš tu hromadu getterů a setterů, když je vůbec nepoužíváš? A proč každá metoda vrací boolean? Takový program nemá smysl opravovat.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
11. 6. 2014   #3
-
0
-

Tyhle kódy jsem dostal od ostatních, na nich mám vytvořit databázový tabulky. Settry jsou tam, protože bude možnost výrobek editovat (změnit cenu, název). S těma boolenama nevím, asi je tak dotyčný zvyklý, jde to i bez nich samozřejmě. Opravdu je tam potřeba toho tolik opravovat? Mám tam vytvořený takový menší prostředí, kde máš úvodní obrazovku, tlačítka (Výrobky, Objednávky). Po kliknutí na každou z nich se ti objeví další možnosti tedy Přidat výrobek, Odebrat výrobek, Upravit výrobek, Zobrazit seznam výrobků. Při kliknutí na Zobrazit seznam mi vyskočí právě tato tabulka s předpokládaným seznamem výrobků. Při kliknutí na přidat výrobek mi vyskočí ta moje chtěná komponenta, kam zadám údaje nového výrobku a po stisknutí tlačítka přidat se mi tento výrobek přidá do databáze, tak že když znovu kliknu na Zobrazit seznam výrobků, tak tam nový výrobek bude přidaný.

Nahlásit jako SPAM
IP: 2001:718:1e02:9116:7869:c...–
Kit+15
Guru
11. 6. 2014   #4
-
0
-

#3 merobijec
Settery tam jsou, ale jsou nefunkční. Ani nedokáží zvalidovat vstup. Pokud výrobek nesmí být přidán duplicitně, nemůžeš použít List, ale je nutné použít Dictionary. Java je objektový jazyk, ale ten program je celý napsán procedurálně. Proto bude lepší to předělat.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Vypis dat z tabulky — založil Bloudy

Uprava dat z tabulky — založil nord

Vypis dat z tabulky — založil Bloudy

Výpis dat do tabulky v C — založil Filip

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý