já to mám v tom hlavnim okně ji tvořim
JTable table = new JTable();
String[] columnNames = new String[] { "Značka", "Obsah", "Barva", "Cena"};
table.setModel(new MotorkaTableModel(columnNames));
JScrollPane pane = new JScrollPane(table);
hlavniOknoFrame.add(pane);
tady odkazuju na MotorkaTableModel
import java.util.Vector;
import javax.swing.table.AbstractTableModel;
import logika.Motorka;
import logika.MotorkaParser;
public class MotorkaTableModel extends AbstractTableModel {
public static final int ZNACKA_INDEX = 0;
public static final int OBSAH_INDEX = 1;
public static final int BARVA_INDEX = 2;
public static final int CENA_INDEX = 3;
protected String[] columnNames;
protected Vector<Motorka> dataVector;
public MotorkaTableModel(String[] columnNames) {
this.columnNames = columnNames;
dataVector = MotorkaParser.parseFile("motorky.txt");
}
public String getColumnName(int column) {
return columnNames[column];
}
public boolean isCellEditable(int row, int column) {
return true;
}
public Class getColumnClass(int column) {
switch (column) {
case ZNACKA_INDEX:
case BARVA_INDEX:
return String.class;
case OBSAH_INDEX:
return Integer.class;
case CENA_INDEX:
return Integer.class;
default:
return Object.class;
}
}
public Object getValueAt(int row, int column) {
Motorka m = dataVector.get(row);
switch (column) {
case ZNACKA_INDEX:
return m.getZnacka();
case BARVA_INDEX:
return m.getBarva();
case OBSAH_INDEX:
return m.getObsah();
case CENA_INDEX:
return m.getCena();
default:
return new Object();
}
}
public void setValueAt(Object value, int row, int column) {
Motorka m = dataVector.get(row);
switch (column) {
case ZNACKA_INDEX:
m.setZnacka((String) value);
break;
case BARVA_INDEX:
m.setBarva((String) value);
break;
case OBSAH_INDEX:
m.setObsah((Integer) value);
break;
case CENA_INDEX:
m.setCena((Integer) value);
break;
default:
System.out.println("invalid index");
}
fireTableCellUpdated(row, column);
}
public int getRowCount() {
return dataVector.size();
}
public int getColumnCount() {
return columnNames.length;
}
public boolean hasEmptyRow() {
return false;
}
public void addEmptyRow() {
dataVector.add(new Motorka("", 0, "", 0));
fireTableRowsInserted(dataVector.size() - 1, dataVector.size() - 1);
}
}
a tady je ještě odkaz na MotorkaParser
package logika;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Vector;
public class MotorkaParser {
public static Vector<Motorka> parseFile(String filename) {
Vector<Motorka> motorky = new Vector<Motorka>();
File file = new File(filename);
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String[] split = line.split(" ");
motorky.add(new Motorka(split[0], Integer.parseInt(split[1]),
split[2], Integer.parseInt(split[3])));
}
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return motorky;
}
}
a tady je základ ta třída Motorka
public class Motorka
{
private String znacka;
private int obsah;
private String barva;
private int cena;
public Motorka(String znacka, int obsah, String barva, int cena) {
this.znacka = znacka;
this.obsah = obsah;
this.barva = barva;
this.cena = cena;
}
public void print()
{
System.out.println(" " + getZnacka());
System.out.println(" " + getObsah());
System.out.println(" " + getBarva());
System.out.println(" " + getCena());
}
public String getZnacka() {
return znacka;
}
public int getObsah() {
return obsah;
}
public String getBarva() {
return barva;
}
public int getCena() {
return cena;
}
public void setZnacka(String znacka) {
this.znacka = znacka;
}
public void setObsah(int obsah) {
this.obsah = obsah;
}
public void setBarva(String barva) {
this.barva = barva;
}
public void setCena(int cena) {
this.cena = cena;
}
}