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