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

    Rendere la JTable selezionabile ma non editabile

    Ciao,
    attualmente creo una JTable col seguente codice:

    final JTable table = new JTable(data, columnNames);
    JScrollPane scrollPane = new JScrollPane(table);
    table.setFillsViewportHeight(true);
    table.setEnabled(false);
    j=new JTableHeader();
    j=table.getTableHeader();
    add(j);
    j.setBounds(80, 80, 800, 30);
    add(scrollPane);
    scrollPane.setBounds(12, 110, 1000, 400);

    setBackground(new java.awt.Color(255, 255, 255));
    setPreferredSize(new java.awt.Dimension(680, 600));
    setLayout(null);
    table.setAutoResizeMode(table.AUTO_RESIZE_OFF);
    table.setEnabled(true);

    TableColumn column = null;
    for (int i = 0; i < table.getColumnModel().getColumnCount(); i++) {
    column = table.getColumnModel().getColumn(i);
    column.setPreferredWidth(100);

    }

    table.getSelectionModel().addListSelectionListener (

    new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent event) {
    sel=table.getSelectedRow();
    int viewRow = table.getSelectedRow();
    if (viewRow < 0) {
    //Selection got filtered away.
    statusText="";
    System.out.println(statusText);
    } else {
    int modelRow =
    table.convertRowIndexToModel(viewRow);
    statusText=(String.format("Selected Row in view: %d. " +
    "Selected Row in model: %d.",
    viewRow, modelRow));
    System.out.println(statusText);
    }
    }
    }
    );



    Cosi mi consente di selezionare le righe ma anche di modificare i campi della tabella.
    Come faccio a rendere selezionabili le righe ma a negare la possibilita' di modificarne i campi?
    Grazie mille

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

    Re: Rendere la JTable selezionabile ma non editabile

    Originariamente inviato da lukeman83
    final JTable table = new JTable(data, columnNames);

    Cosi mi consente di selezionare le righe ma anche di modificare i campi della tabella.
    Come faccio a rendere selezionabili le righe ma a negare la possibilita' di modificarne i campi?
    È il table model (implementazione di TableModel) che "espone" il flag di editabilità delle celle tramite il suo metodo isCellEditable).

    Il costruttore JTable(Object[][] rowData, Object[] columnNames) crea un table model implicito (e interno) dove tutte le celle sono sempre editabili. L'altro costruttore JTable(Vector rowData, Vector columnNames) usa invece un DefaultTableModel dove anche qui il suo isCellEditable implementato ritorna sempre true.

    Se ti basta un DefaultTableModel come struttura dati (Vector di Vector di oggetti), è sufficiente che lo estendi (anche con una anonymous class, ad esempio) per fare l'override di isCellEditable e far ritornare sempre false.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.