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

    [Java] Perplessità uso JTable, TableCellRenderer e cattivo funzonamento

    Buongiorno, vorrei che al click del Bottone, si generi un testo a lato del bottone(nella colonna a sinistra sulla stessa riga)

    codice:
        private class Bottone implements TableCellRenderer {
    
    
                     
                     Bottone(){                      
                      }
                                             
    
                     public Component getTableCellRendererComponent(
                     
                       JTable table,
                        Object value,
                        boolean isSelected,                   
                        boolean hasFocus,
                            int row,
                        int column) {      
                        
                            if (isSelected && hasFocus)    {
                                               
                            modTab.setValueAt("testo",row,column-1); 
                                                                 
                            
                            }                                                       
                            JButton btn = new JButton("Genera");
                                     
                           return (JButton)btn;
                        
                        
                        
                     }
                }
    Di fatto questo avviene al fuoco ed alla selezione della cella.
    Ed inoltre il pulsante premuto dal mouse(sx) mostra sotto la cella/casella di testo.
    Come evitare gli inconvenienti?
    jabjoint

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    codice:
        private class Bottone implements TableCellRenderer {
                     Bottone(){                      
                      }
    
                     public Component getTableCellRendererComponent(
                     
                       JTable table,
                        Object value,
                        boolean isSelected,                   
                        boolean hasFocus,
                            int row,
                        int column) {      
                        
                            if (isSelected && hasFocus)    {
                                               
                            modTab.setValueAt("testo",row,column-1); 
                                                                 
                            
                            }                                                       
                            JButton btn = new JButton("Genera");
                                     
                           return (JButton)btn;
                     }
                }
    No pessimo modo. Mettere pulsanti nelle celle è più problematico, perché non c'è un supporto diretto (si possono mettere invece facilmente dei combo-box e checkbox). Ci vuole molto di più di quello che hai postato sopra.

    Considera che quello che "vedi" nelle celle NON sono "veri" componenti ma solo una stampa, una "proiezione" dei componenti (come se fossero degli "stampini" ad inchiostro). Solo quando si entra nella fase di edit della cella, allora entra in gioco un TableCellEditor che può mettere nella cella un "vero" componente es. un textfield per l'input.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    No pessimo modo. Mettere pulsanti nelle celle è più problematico, perché non c'è un supporto diretto (si possono mettere invece facilmente dei combo-box e checkbox). Ci vuole molto di più di quello che hai postato sopra.

    Considera che quello che "vedi" nelle celle NON sono "veri" componenti ma solo una stampa, una "proiezione" dei componenti (come se fossero degli "stampini" ad inchiostro). Solo quando si entra nella fase di edit della cella, allora entra in gioco un TableCellEditor che può mettere nella cella un "vero" componente es. un textfield per l'input.
    Non volevo appesantire il codice, però in effetti si, capisco parzialmente, la differenza col TableCellEditor.
    Tenterò con quello, meglio fare un bel lavoro.
    jabjoint

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.