Avatar billede OBS Juniormester
09. april 2025 - 07:09 Der er 3 kommentarer

AbstractTableModel

Hvordan  gøres flere kolonner iditerbar ?
Avatar billede arne_v Ekspert
09. april 2025 - 13:38 #1
Avatar billede OBS Juniormester
09. april 2025 - 15:09 #2
Tak

Jeg prøver at lave en tabel, hvori jeg ønsker at samtlige kolonner er iditerbare, men hvordan skal dette gøres ?
Jeg har en skitse til en tabel, spørgsmålet vedrører linie 38.
    import javax.swing.*;
    import javax.swing.table.AbstractTableModel;

    public class MyTableModel extends AbstractTableModel {    // Husk dette
        private String[] columnNames = {"Navn","Køn","Alder" };    //Kolonne navne
       
        private Object[][] data = {                                //  Føje  data
            {"Alice",  "Kvinde", 25},                                // Specifikke  data
            {"Bob",  "Mand", 30},
            {"Cathy",  "Kvinde", 22},
            {"Jens" , "Mand", 32}
        };

        @Override
        public int getRowCount() {
            return data.length;                          //Antal rækker
        }
 
        @Override
        public int getColumnCount() {
            return columnNames.length;                  // Antal kolonner
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            return data[rowIndex][columnIndex];        //Værdi i en specifik celle
        }

        @Override
        public String getColumnName(int columnIndex) {
            return columnNames[columnIndex];            // Kolonne navn
        }

        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return columnIndex == 2;  // Kun kolonnen "Alder" er editirbar, HER VIL JEG GØRE SAMTLIGE KOLONNER EDITIRBARE - men hvordan ??
             
           
        }

        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {// Opdaterer værdien i een specifik celle
            data[rowIndex][columnIndex] = aValue;              // Opdaterer  værdien ;  Meget  vigtig
            fireTableCellUpdated(rowIndex, columnIndex);      // Notify listeners, Husk dette
        }

        public static void main(String[] args) {
            JFrame frame = new JFrame("Eksempel på en tabel ( JTabel)");
            MyTableModel model = new MyTableModel();
            JTable table = new JTable(model);
            frame.add(new JScrollPane(table));
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);
        }
    }
Avatar billede arne_v Ekspert
09. april 2025 - 15:40 #3
@Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return columnIndex == 2;
        }

->

        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return true;
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester