Newsgroup: it.comp.java
Titolo: Selezione Jtable

Salve, io ho una Jtable a due colonne, con gli elementi ordinati in modo
crescente rispetto ad una colonna.
Ecco, io vorrei che premendo una lettera della tastiera mi si selezionasse
il primo elemento della tabella che inizia con la lettera premuta.
E' possibile? Girando su internet non ho trovato nulla.
Grazie.
Andrea
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 E' possibile? Girando su internet non ho trovato nulla.
Certo che è possibile. Ti metti in listening sulla tastiera, al 
keypressed frughi nel tuo tablemodel alla ricerca dell'elemento che ti 
interessa, recuperi il rowIndex e dici al jtable che la riga selezionata 
è quella con quel rowindex.
Se tutto questo ti suona "strano" ti consiglio di partire da qui:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
Buon lavoro
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://ammentos.biobytes.it
Flash tutorial: 
http://ammentos.biobytes.it/quickstart/quickstart.htm

Ti ringrazio per avermi indicato la strada, e con il tuo aiuto ce l'ho
fatta.
Ora mi sorge un'altro problema.
Quando ho selezionato la riga, il Jtable mi dovrebbe posizionare la riga
selezionata in cima alla lista.
Qualche suggerimento?
Grazie ancora
Andrea

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Qualche suggerimento?
In cima alla lista intendi che il model deve cambiare ordinamento o 
semplicemente (ma immagino sia questo) che la riga interessata deve 
essere visualizzata in alto?
Nel primo caso hai bisogno di comparatori per ordinare il model, nel 
secondo caso
1) Ottieni un rettangolo nella riga che vuoi mostrare
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JTable.html#getCellRect(int,%20int,%20boolean)
2) chiami scrollRectToVisible() della jtable col rettangolo trovato.
Ciao!


Sei veramente grande!
La table mi scrolla, ma non me la mette in cima alla lista.
Mi spiego la mia tabella già è ordinata e i primi elementi cominciano con la
lettera a.
Premendo la b, lui mi si posiziona sul primo elemento che comincia con la b,
ma io lo vedo in basso alla lista. Come posso "metterlo in cima"?

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ma io lo vedo in basso alla lista. Come posso "metterlo in cima"?
Mumble... credo sia dovuto al fatto che il componente scrolla del minimo 
necessario per rendere il rettangolo visibile. A naso dovresti poter 
avere l'effetto cercato in questo modo:
1) Posizionando il componente all'ultima riga
2) Richiamando scrollRectToVisible()
Non ho provato ma dovrebbe andare. Ovviamente: se digiti "z" e la riga 
che ti interessa si trova in ultima posizione non la vedrai mai "in 
alto", a patto di non aggiungere una serie di righe vuote alla fine del 
model (bleah :-) ), o di "filtrare" il model escludendo le righe 
precedenti dalla visualizzazione.



Ancora una volta ti ringrazio, grazie a te ho risolto!
Avendo una lista di al max 10 elementi ho fatto cosi!
	if ((evento.getKeyCode() >= 65) && (evento.getKeyCode() <= 90)) { // catcho
solo le lettere
    		if (TableModel.getSelectedCharIndex((evento.getKeyChar())) != -1){
    			table.getSelectionModel().setLeadSelectionIndex(TableModel.getSelectedCharIndex((evento.getKeyChar())));
    			if (evento.getKeyCode() > tastoPrecedente){
		        	table.scrollRectToVisible(table.getCellRect(TableModel.getSelectedCharIndex(evento.getKeyChar())
+ 9, 0, false));
    			}
    			else {
		        	table.scrollRectToVisible(table.getCellRect(TableModel.getSelectedCharIndex(evento.getKeyChar()),
0, false));
    			}
    		}
    	}
        tastoPrecedente = evento.getKeyCode();
Scusa se ne approfitto!! :-D
Ora ho un altro problema! Su un'altra tabella ho il DefaultTablemodel, che
permette di editare le celle!
Ecco, io vorrei disabilitare l'editabilità!


 Ecco, io vorrei disabilitare l'editabilità!
Estendi il DefaultTableModel e in particolare tocchi il metodo
public boolean isCellEditable(int row,int column) {
     return false;
}
Questo se, ad esempio, non vuoi fare editare niente.
Saluti
CarMas

Ancora Mille Grazie!

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Salve,
(approfitto della vostra pazienza)
ora avrei un altro problema.
Io ho una Jtable con relativo Model ove tutte le voci sono ordinate secondo
l'ORDER BY di una query.
Ho la necessità di inserire alcune voci, quindi apro un JFrame che mi dà la
possibilità di inserirli.
Ecco, io vorrei che quando confermo l'inserimento, sul JTable mi compaia il
nuovo elemento nel posto esatto, secondo l'Ordinamento detto in precedenza.
In pratica una specie di refresh ottimizzato.
Vi ringrazio.
