Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41

    [Java] Popup click destro e altre domande su JTable

    Salve ragazzi! Come ogni tanto mi capita ho ritirato fuori dalla naftalina il mio vecchio progettino personale in Java (qualcuno di voi forse se ne ricorda dato che feci alcune domande in merito) ... chissà se lo finirò mai ...
    In ogni caso avevo un paio di domande, probabilmente stupide, ma non riesco a venire a capo di nulla.
    Attualmente io uso una JTable (che utilizza i Vectors per i nomi delle colonne e per le righe ... esiste un modo migliore per "mostrare" una tabella di cui non so il numero massimo di elementi battezzando le diverse colonne?) per visualizzare un "log" (sarebbe meglio dire una Job List) contenente tutte le operazioni fatte dal programma e il loro status. Al momento, sebbene mi sia accorto ora di aver fatto degli errori a livello logico (avrei potuto farla in modo diverso sfruttando l'ereditarietà), la cosa funziona ... però volevo inserire una funzione aggiuntiva, cioè quella che cliccando col destro su di una riga (che sostanzialmente rappresenta un "job") mi faccia comparire un popup che mi permetta di fare alcune operazioni sul suddetto popup (come ad esempio eliminare il job o altro). Ho cercato su internet ma ho trovato solo della roba che o non funziona o funziona sulla Tabella nella sua interezza ... come posso fare per fare in modo che mi prenda solo la riga selezionata della tabella?
    Grazie in anticipo!

    Ps: L'unica cosa "diversa" da una normale tabella in quella che ho realizzato io è il modello, per rendere le celle non editabili ... è possibilie inserire il popup in questa classe?

    codice:
    public class TableModel extends DefaultTableModel { 	
        public TableModel(Vector<Vector> tableData, Vector<String> colNames)  	
    { 		
                  super(tableData, colNames); 	
    } 	
         
        public boolean isCellEditable(int row, int column)           
    {         
                  return false;     
    }  
      }

  2. #2
    Ho dovuto fare anch'io una cosa simile alla tua ed in quel periodo feci in questo modo:

    codice:
    jTable1.addMouseListener(new MouseAdapter() {
    	public void mouseClicked(MouseEvent e) {
    		if (e.getClickCount() == 2) {
    			 JTable target = (JTable)e.getSource();
    			 int row = target.getSelectedRow();
    			 int column = target.getSelectedColumn();
    			 // do some action if appropriate column
    			 
    			 if(column>=3 && column<5)
    			    	  CreatePopupAndInsertValue(row, column);
    			    }
    			  }
    			});
    io dovevo modificare dalla colonna 3 alla 4 e l'ho fatto con un doppio click, ma se devi farlo col tasto di destra basta sotitutire
    codice:
    if (e.getClickCount() == 2) {
    con
    codice:
    if (e.isMetaDown()) {
    poi nell'ultimo "if" ho costruito un piccolo popup dove inserivo i valori.

    Ciao
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41
    Ti ringrazio per la risposta e mi scuso se replico solo ora ... ho una domanda (probabilmente stupida) che non riesco a capire ...

    Tu per reare il popup stesso come fai? Voglio dire, ho visto che richiami una funzione CreatePopupAndInsertValue() che penso abbia scritto tu (dato che non trovo da nessuna parte) ma come è composta? Io ho provato a far comparire un popup utilizzando la classe JPopupMenu ma non mi compare nulla ... ho visto in giro cercando con google che alcuni lo fanno creando nuovi frame e pannelli, ma se c'è una classe apposta volevo provare a usare quella prima ...

  4. #4
    Si..chiamo quel metodo lì...
    che a sua volta richiama una classe dove creo il popup con un normalissimo JFrame...
    se ti serve te lo passo quando ritorno al lavoro fra 2 giorni...
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it L'avatar di Gipple
    Registrato dal
    Mar 2009
    Messaggi
    41
    Grazie mille, ma magicamente (in maniera abbastanza casuale) ho riscritto il blocco e ora funziona ... evidentemente c'era qualcosa di errato in precedenza, ma non capisco cosa ... bhe vabbè grazie comunque e auguroni di Buon Natale!

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.