Wiki - JTable-Tutorial

@Beni
könntest du das JTable (Tutorial)© – Byte-Welt Wiki etwas überarbeiten?
Vehicel statt Vehicle liest sich dort ja ganz ärgerlich

nach
http://forum.byte-welt.net/java-forum/spiele-und-multimedia-programmierung/18324-wav-sound-abspielen.html#post129082
habe ich für das Model eine Variante ohne eigene Verwaltung von Listener und komplizierte Events gebastelt,
nur fireTableDataChanged(); überall, nicht ganz schön, aber weitaus kürzer, als Ersatz mit Warnung oder als zweite Variante vielleicht akzeptabel?

    private String[] columnNames = new String[]  {"Name", "Fahrgäste", "Räder", "Besitzt Motor"};
    private Class[] columnClasses = new Class[] {String.class, Integer.class, Integer.class, Boolean.class};
    private List<Vehicle> vehicles = new ArrayList<>();

    public void addVehicle(Vehicle vehicle) {
        this.vehicles.add(vehicle);
        fireTableDataChanged();
    }

    public void sort() {
        Collections.sort(this.vehicles);
        fireTableDataChanged();
    }

    @Override
    public int getColumnCount() {
        return this.columnNames.length;
    }

    @Override
    public int getRowCount() {
        return this.vehicles.size();
    }

    @Override
    public String getColumnName(int column) {
        return this.columnNames[column];
    }

    @Override
    public Class getColumnClass(int column) {
        return this.columnClasses[column];
    }

    @Override
    public Object getValueAt(int row, int column)    {
        Vehicle v = this.vehicles.get(row);
        switch (column) {
            case 0:
                return v.getName();
            case 1:
                return Integer.valueOf(v.getPlaces());
            case 2:
                return Integer.valueOf(v.getWheels());
            case 3:
                return v.hasMotor() ? Boolean.TRUE : Boolean.FALSE;
            default:
                return null;
        }
    }

    @Override
    public boolean isCellEditable(int row, int column)  {
        return false;
    }

    @Override
    public void setValueAt(Object aValue, int row, int column)  {
        // nicht beachten
    }
}

in der GUI passt dazu noch für neue Sortieren-Funktionalität,
falls diese Sortieren-Variante nicht stört, immerhin auch eigene Unterseite am Ende

        final JButton buttonSort = new JButton("sort");
        buttonSort.addActionListener(new ActionListener()
            {
                @Override
                public void actionPerformed(ActionEvent e)
                {
                    model.sort();
                }
            });
        JPanel buttons = new JPanel();
        buttons.add(buttonAdd);
        buttons.add(buttonSort);

....

content.add(buttons, BorderLayout.SOUTH);

Ich kann mal reingucken. Ich schreib mir eine Notiz, damit ich das hoffentlich nicht vor dem Wochenende vergessen haben :wink:

Bei der Gelegenheit gleich die 6er-Links auf 8 updaten :smiley:

Das geht einfach mit dem {{JAPI}}-Tag. Dann werden die Links immer auf die aktuelle, im Tag eingebaute, Java-Version gesetzt.

z.B. {{JAPI|JTableModel}} Ich glaube, einige Links habee ich auf diese Art schon mal ersetzt.

Habe ich jetzt mal gemacht…

Kannst du das mal alleine machen, ich bin mir nicht sicher, wo das hin gehört.

ach, Themen von vor 2 Jahren nun weiterführen…