Toon posts:

[java]JTable Non-editable Hoe??

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,
Even een vraagje. Hoe krijg ik het voor elkaar dat de cellen van een JTable niet aan te passen zijn door de gebruiker?

Ik heb het geprobeert met een TableCellEditor en daarvan zorgen dat de cellen niet gewijzigd konden worden, maar dat is mij niet gelukt.

Iemand die weet hoe het wel moet?

(Ik gebruik jdk 1.4)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik regel het vanuit mijn table model:
code:
1
2
3
4
5
6
7
public class BlaatTableModel extends AbstractTableModel{
    ...
    public boolean isCellEditable(int nRow, int nCol) {
      return false;
    }   
    ...
}

Verwijderd

Topicstarter
Thanks,

das wel een goede oplossing, ik heb alleen een volgend probleem bij het implementeren ervan.

Ik neem aan dat je aan methode-overriding doet.
Je bouwd dus je eigen TableModel met daarin 1 methode genaamd: isCellEditable. en de rest erf je over van AbstractTableModel.

In je code waar je je tableModel aanroep komt dan iets in de zin van dit te staan??:
code:
1
BlaatTableModel myTableModel = (BlaatTableModel)myTable.getModel();

Of niet? Als dat namelijk wel zo is krijg ik een: java.lang.ClassCastException: javax.swing.table.DefaultTableModel

Met andere woorden op die manier mag het niet.

Wat doe ik fout?
Op dinsdag 28 mei 2002 20:37 schreef Alarmnummer het volgende:
Ik regel het vanuit mijn table model:
code:
1
2
3
4
5
6
7
public class BlaatTableModel extends AbstractTableModel{
    ...
    public boolean isCellEditable(int nRow, int nCol) {
      return false;
    }   
    ...
}

Verwijderd

Nadat je een TableModel hebt gedefinieerd moet je het volgende doen:
code:
1
2
BlaatTableModel btm = new BlaatTableModel();
JTable blaatTabel = new JTable(btm);

of gebruik:
code:
1
blaatTabel.setModel(btm);

Wat je nu doet is een tabel aanmaken zonder TableModel op te geven. Dan krijgt die tabel een standaard DefaultTableModel en die is niet te casten in een BlaatTableModel.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Thanks,
You`re welcome :)
das wel een goede oplossing, ik heb alleen een volgend probleem bij het implementeren ervan.

Ik neem aan dat je aan methode-overriding doet.
Je bouwd dus je eigen TableModel met daarin 1 methode genaamd: isCellEditable. en de rest erf je over van AbstractTableModel.
Nope, ik doe de rest van de methodes ook :) Ik vul een table altijd via een table model omdat dit heel overzichtelijk en duidelijk werkt, en zie verder Apophis zijn antwoord.

Verwijderd

Topicstarter
Dank je wel voor de antwoorden.
'T is gelukt.
Pagina: 1