Edycja komórki w JTable

0

Witam

Chciałbym aby można było edytować zawartość komórki w mojej tabeli.
Dodałem metodę do mojej klasy rozszerzającej AbstractTableModel o nazwie isCellEditable.
Jednak dalej nie wiem co zrobić dalej, podejrzewam że trzeba jakąś tą daną przechwycić.

Oto mój fragment kodu:

import javax.swing.table.AbstractTableModel;

/**
*

  • @Author tomek
    */
    public class WModel extends AbstractTableModel
    {
    private String[] nazwy;
    private String[] wartosci;

    public WModel(String[] n)
    {
    nazwy = n;
    wartosci = new String[nazwy.length];
    for(int i=0 ; i<wartosci.length ; i++)
    wartosci[i] = "-";
    }

    public int getRowCount()
    {
    return nazwy.length;
    }

    public int getColumnCount()
    {
    return 2;
    }

    public Object getValueAt(int row, int col)
    {
    if(col == 0)
    return nazwy[row];

     return wartosci[row];
    

    }

    public boolean isCellEditable(int r, int coll)
    {
    if(coll == 1) return true;
    return false;
    }

}

Dziękuję za pomoc :)

Chciałbym również zapytać w jaki sposób zrobić aby zmienić szerokość wiersza, tzn. chcę wyświetlić w wierszu kilka linijek tekstu i chcę aby się wszystko pomieściło

zrobienie return "sdfsdad \n dsfadsa \n" nie daje tego rezultatu w getValueAt.

:)

0

Po prostu przeciąż metodę setValueAt, czyli w twoim przypadku:

public void setValueAt(Object value, int rowIndex, int columnIndex) {
   wartosci[rowIndex] = (String) value;
}

Co do szerokości wiersza to rozumiem, że masz na myśli wysokość wiersza. JTable ma metodę setRowHeight(int rowHeight), ale będziesz chyba musiał napisać własnego renderer-a (który będzię daną komórkę rysował). Tutaj masz przykład: http://www.java2s.com/Code/Java/Swing-Components/MultiLineCellExample.htm

1 użytkowników online, w tym zalogowanych: 0, gości: 1