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

    Una colonna di jTable non editabile

    Buongiorno.

    Vorrei chiedere a qualcuno più capace di me di mostrarmi il codice
    di un renderer da agganciare ad una jTable con due colonne e
    10 righe già creata con i tools visuali di NETBEANS.

    Il renderer dovrebbe far sì che in tutte le celle siano contenuti
    dei jTextBox dove quelli della prima colonna dovrebbero essere
    NON editabili.

    Seguendo altri suggerimento sono riuscito in parte, ma sembra
    che lo statement jTextField1.setEditable(false) non abbia effetto
    mentre lo statement jText1.setBackground(Color.LIGHT_GRAY)
    immediatamente successivo, funziona correttamente.

    Grazie. Franco

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

    Re: Una colonna di jTable non editabile

    Originariamente inviato da ffellico
    Il renderer dovrebbe far sì che in tutte le celle siano contenuti
    dei jTextBox dove quelli della prima colonna dovrebbero essere
    NON editabili.

    Seguendo altri suggerimento sono riuscito in parte, ma sembra
    che lo statement jTextField1.setEditable(false) non abbia effetto
    Scusa ma cosa centra il setEditable su un campo di testo?

    Se una colonna (anzi per essere precisi una cella) è "editabile" o meno dipende da come il table model implementa il suo isCellEditable. Quindi precisa quale table model usi, se uno predefinito o uno "tuo".

    E comunque il fatto che hai generato la interfaccia con un tool visuale non vuol dire nulla e non cambia le cose (anzi ... semmai le peggiora perché rischi di non sapere cosa ha fatto o non riuscire a gestire le cose come vuoi tu).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    una colonna di jTable editabile

    Scusami Andrea, ma da quello che hai detto ho capito di essere proprio su una strada sbagliata.

    Forse è meglio che ti illustro il mio problema e sono certo che se mi mostrerai un piccolo esempio su come risolverlo, imparerò molte cose a proposito delle jTable.

    Quello che mi serve di fare è:

    Dato un ArrayList di stringhe, vorrei caricare tutte le stringhe nella prima colonna di una jTable di due colonne; ciascun elemento caricato non deve essere editabile e la seconda colonna deve avere delle celle vuote nelle quali invece l'utente può inserire qualcosa; inoltre le celle della prima colonna dovrebbero essere di un colore diverso da quelle della seconda colonna.

    Successivamente devo prelevare dalla jTable tutte le celle della seconda colonna per utilizzarle.

    Ti ripeto che la tua risposta mi sarà utile non soltanto per la soluzione del caso particolare, ma anche per farmi capire come interagiscono:

    jTable, tablemodel, e anche renderer.

    Grazie. Franco

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

    Re: una colonna di jTable editabile

    Originariamente inviato da ffellico
    Dato un ArrayList di stringhe, vorrei caricare tutte le stringhe nella prima colonna di una jTable di due colonne; ciascun elemento caricato non deve essere editabile e la seconda colonna deve avere delle celle vuote nelle quali invece l'utente può inserire qualcosa; inoltre le celle della prima colonna dovrebbero essere di un colore diverso da quelle della seconda colonna.

    Successivamente devo prelevare dalla jTable tutte le celle della seconda colonna per utilizzarle.
    Le possibilità sono due:

    1) Sfrutti DefaultTableModel che è la implementazione di un table model predefinita nel framework. Però devi estenderlo, perché DefaultTableModel restituisce sempre true da isCellEditable (quindi tutte le celle sarebbero editabili). Se lo estendi, puoi ridefinire isCellEditable e far ritornare false se la colonna è la prima (indice 0).

    Poi per il resto puoi inserire/estrarre dati come vuoi, basta vedere la documentazione javadoc. Fornisce metodi es. addColumn, addRow, insertRow, setDataVector, ecc...
    Se hai un ArrayList con le stringhe per la prima colonna non puoi passarlo direttamente, perché non ha un metodo che riceve un ArrayList per una colonna, quindi dovresti fare tu una piccola trasposizione. Però ha dei addColumn che ricevono o un Object[] o un Vector.

    2) Implementi un tuo table model. Tipicamente si estende AbstractTableModel. Il punto principale è che la gestione della struttura dati interna al model è tutta a tuo carico. Ma puoi farla come meglio preferisci.
    Nel tuo caso: due ArrayList (per ciascuna colonna) o un ArrayList di oggetti che "modellano" una riga oppure ancora un ArrayList per la prima colonna e un Object[] per la seconda oppure ancora il caso meno strutturato di un Object[][].
    Dall'esterno (per JTable) è del tutto indifferente come si implementa la struttura dati interna al model.

    Quindi devi implementare una serie di metodi: getColumnCount, getRowCount, getColumnName, getValueAt, ecc...
    Se si ha una idea chiara di come (e perché) il table model espone le cose in quel modo ... il tutto diventa abbastanza semplice (e logico). Se invece non hai ancora familiarità con i table model, ti suggerisco di leggere magari il tutorial ufficiale How to Use Tables.
    Puoi trovare esempi sul forum e anche sul mio sito.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    una colonna di jTable editabile

    Ok Andrea.

    Ti ringrazio dei consigli. Ora mi metto al lavoro e certamente mi aiuterò anche con gli esempi nel tuo sito.

    Grazie ancora. Franco

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.