Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [JTable] Sapere se una cella è selezionata.

    Salve a tutti.
    So' che esiste un metodo della JTable pr sapere se una determinata cella è selezionata.
    La cosa che non riesco a capire è come si utilizza questo metodo.
    Io ho provato a fare in questo modo:
    codice:
    public void indiceCellaSelezionata() { 
        for(int i = 0 ; i < tabella.getRowCount() ; i++)
        {
            for(int j = 0 ; j < tabella.getColumnCount() ; j++)
            {
                 if(tabella.isCellSelected(i, j) == true)
                     System.out.println(i + ", " + j) ; 
            }
        } 
     }
    ...ma non stampa assolutamente nulla.
    Probabilmente, (anzi, sicuramente), sono io che non so utilizzare il metodo .isCellSelected(int row, int col), perchè altrimenti non mi spiego questo comportamento.
    Quindi, in sostanza, se qualcuno riuscisse a spiegarmi passo passo come potrei fare in modo che, quando col mouse seleziono una cella, riesca ricavare gli indici (dico indici perchè nel mio TableModel ho una matrice associata alla JTable, per cui ad ogni indice della matrice corrisponde una cella della JTable) della cella selezionata.
    Vi ringrazio in anticipo per le eventuali risposte!

  2. #2
    Il metodo è corretto, da dove lo richiami però?

  3. #3
    In effetti il dubbio che il metodo fosse chiamato nella parte sbagliata mi era venuto...
    Il metodo l'ho richiamato nella classe in cui ho istanziato la JTable.

  4. #4
    Posta il codice magari riusciamo a darti una mano

  5. #5
    Prima di tutto, grazie per le risposte!

    Il codice che ho nella classe è tanto, e penso che creerebbe ancora più confusione postandolo...
    In ogni caso, sto facendo un foglio di calcolo elettronico, e ho bisogno di sapere quale cella sto selezionando col mouse, in modo da far visualizzare all'utente la formula contenuta in quella determinata cella...e il metodo più ovvio che mi era venuto in mente era proprio quello che ho postato sopra...ma purtroppo non funziona e non capisco il perchè...
    Genericamente, tu come faresti a farti restituire gli indici (corrispondenti alla Matrice istanziata nel TableModel), relativi alla cella selezionata col mouse?
    Grazie ancora!

  6. #6
    Un esempi banale è questo:
    codice:
    public class Test extends JFrame implements ActionListener
    {
    	JTable tabella;
    
    	public Test()
    	{
    		String[] prova = new String[]
    		{ "Prova" };
    		String data[][] = new String[10][1];
    		for (int i = 0; i < 10; i++)
    		{
    			data[i] = prova;
    		}
    		tabella = new JTable(data, new String[]
    		{ "Colonna" });
    		JPanel panel = new JPanel();
    		JScrollPane pane = new JScrollPane(tabella);
    		panel.add(pane);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		JButton button = new JButton("Prova");
    		button.addActionListener(this);
    		panel.add(button);
    		this.add(panel);
    		this.pack();
    		this.setVisible(true);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent arg0)
    	{
    		for (int i = 0; i < tabella.getRowCount(); i++)
    		{
    			for (int j = 0; j < tabella.getColumnCount(); j++)
    			{
    				if (tabella.isCellSelected(i, j) == true)
    					System.out.println(i + ", " + j);
    			}
    		}
    	}
    
    	public static void main(String[] args)
    	{
    		new Test();
    	}
    
    }

  7. #7
    Grazie mille ancora, adesso provo a scasinarci ancora un pochino...se dovessi avere altri problemi chiederò ancora! :P

  8. #8
    Ho provato il tuo esempio; ho visto che tu hai usato un bottone per farti ritornare l'indice della cella selezionata.
    Io avrei bisogno di farlo in modo automatico, senza ricorrere ad un component...
    Per cui, adesso, se volessi fare in modo che, selezionando solamente la cella, automaticamente mi restituisse gli indici, come dovrei fare? Perchè ho provato a farlo in vari modi ma non funziona...
    Grazie mille ancora!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Puoi provare con questo, mi sembra faccia al caso tuo:

    http://download.oracle.com/javase/6/...lListener.html

    Oppure questa

    http://download.oracle.com/javase/6/...eListener.html

  10. #10
    Grazie mille per il tuo aiuto Patrick Jane!
    Ho guardato attentamente la documentazione dei link che mi hai passato; purtroppo, i listener che mi hai linkato, sono listener che mandano una notifica ogni qual volta il TableModel viene modificato.
    Nel mio caso, però, i listener relativi al tableModel non centrano, perchè io vorrei gli indici della cella che seleziono, e non gli indici della cella che modifico.

    Il codice che mi ha postato l'utente francesco.muia risponde alle mie richieste, solo che, come ho già scritto, vorrei farlo in modo automatico.

    vorrei fare in modo che, selezionando solamente la cella, automaticamente mi restituisse gli indici della cella selezionata, come dovrei fare?
    Spero di essermi spiegata bene, e vi ringrazio per l'ennesima volta!

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.