Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Jtable con celle non editabili

    vorrei rendere le celle della mia jtable non editabili.
    ho provato così:
    codice:
    public class FramePrincipale extends javax.swing.JFrame {
    
        private DefaultTableModel model;
        private Object[][] data = new Object[][]{};
        private String[] head = new String[]{
            "Book name", "Author", "Editor", "ISBN", "Price", "Note"
        };
    
        public FramePrincipale() {
            initComponents();
        }
    
    private void initComponents() {
    ...........
    model = new DefaultTableModel(data, head);
            tableData.setModel( model
            );
            tableData.setAutoCreateRowSorter(true);
    }
    ......
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    ovviamente nn funziona.
    al doppio clic posso editare la cella.
    mi sfugge qualche meccanismo.

  2. #2
    Ovviamente devi fare un override di isCellEditable nella classe JTable, non devi definirlo da altre parti sennò non servirebbe a nulla.

    Una cosa tipo questa:
    codice:
        JTable t = new JTable() {
    
            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
    
        };
    lolide
    Java Programmer

    Informati

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Jtable con celle non editabili

    Originariamente inviato da fermat
    codice:
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    mi sfugge qualche meccanismo.
    isCellEditable è sia di un table model, sia di JTable. Su quest'ultimo "prendi" questo controllo più a "monte". Tipicamente è meglio farlo nel table model (a meno che ci siano altre ragioni serie per estendere JTable).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    infatti ho fatto così:
    codice:
    class myTableModel extends DefaultTableModel {
    
        public myTableModel(Object[][] data, String[] col) {
            super(data, col);
        }
    
        @Override
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    }
    codice:
    tableData = new javax.swing.JTable();
    model = new myTableModel(data, head);
    tableData.setModel( model
        );
    tableData.setAutoCreateRowSorter(true);
    così funziona.
    grazie!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    47
    ciao ragazzi sto avendo lo stesso problema che avete sollevato nel post, peccato che non ho molto capito cosa avete fatto.riuscite ad essere un po piu chiari??
    Alex

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    a parte che non si riesumano vecchi post, al max nuovo post con link.
    A mio parere sono abbastanza chiari, l'editabilità di una cella è una proprietà tipica del TableModel o della tabella, dipende a che livello vuoi fare i controlli.
    Ovviamente devi avere una conoscenza minima del pattern MVC che trova applicazione tipica nella struttura delle swing in java (da qui anche il consiglio di andbin di inserire il controllo nel modello e non nella vista)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.