Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126

    [JAVA] Leggere riga selezionata JTable

    Salve a tutti,ho 3 problemi:
    1)Carico da database mysql una serie di record di una tabella in una jTable.
    Ora, ho bisogno che quando clicco su una riga della mia JTble riesca a leggere il campo [0] (o un qualsiasi campo che mi intaressa) che contiene l'ID del record (della riga) selezionato.
    E possibile fare ciò? Se si c'è qualcuno che puo darmi una mano?

    2)Per questioni di lavoro uso netbeans 5.02beta, per sapere quale singolo campo o record l'utente ha cliccato ho creato questo metodo preso dalla guida della sun:
    (Tabella è l'oggetto JTable che uso)
    private void TabellaMouseClicked(java.awt.event.MouseEvent evt) {
    if (gestioneRigheJTable) {
    ListSelectionModel rowSM = Tabella.getSelectionModel();
    rowSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
    //Ignore extra messages.
    if (e.getValueIsAdjusting()) return;

    ListSelectionModel lsm = (ListSelectionModel)e.getSource();
    if (lsm.isSelectionEmpty()) {
    System.out.println("No rows are selected.");
    } else {
    int selectedRow = lsm.getMinSelectionIndex();
    System.out.println("Row " + selectedRow
    + " is now selected.");
    }
    }
    });
    } else {
    Tabella.setRowSelectionAllowed(false);
    }

    if (gestioneColonneJTable) { // false by default
    if (gestioneRigheJTable) {
    //We allow both row and column selection, which
    //implies that we *really* want to allow individual
    //cell selection.
    Tabella.setCellSelectionEnabled(true);
    }
    Tabella.setColumnSelectionAllowed(true);
    ListSelectionModel colSM =
    Tabella.getColumnModel().getSelectionModel();
    colSM.addListSelectionListener(new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent e) {
    //Ignore extra messages.
    if (e.getValueIsAdjusting()) return;

    ListSelectionModel lsm = (ListSelectionModel)e.getSource();
    if (lsm.isSelectionEmpty()) {
    System.out.println("No columns are selected.");
    } else {
    int selectedCol = lsm.getMinSelectionIndex();
    System.out.println("Column " + selectedCol
    + " is now selected.");
    }
    }
    });} }

    Quando clicco su un campo mi visualizza ricorsivamente 0,1,2...n-volte il messaggio della riga che ho selezionato 0,1, n-1 volte.A me interessa che quando clicco su un campo mi visualizza solo una volta la riga selezionata. :master:
    3)[JTree]Questo riguarda un'altro oggetto.un Jtree.
    Vorrei che quando avvio la mia applicazione mi metta selezionato un determinato nodo.è possibile?
    Ciao e grazie mille

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    dunque ti comviene mettere un ascoltatore suula tua tabella

    codice:
    Tabella.getModel().addTableModelListener(new MyListener());

    e poi ti implementi la classe di ascolto...

    codice:
    // CLASSE CHE CONTROLLA SE CAMBIO DEI DATI
    private class MyListener implements TableModelListener { 
    	public void tableChanged(TableModelEvent e) { 
    		
    	// RECUPERO IL VALORE DELLA CELLA SELEZIONATA
    	int col = e.getColumn(); 
    	int row = e.getFirstRow(); 
    	TableModel model = (TableModel)e.getSource();
    	String valoreInserito = model.getValueAt(row,col).toString();
    	// DA QUA FAI QUELLO CH VUOI
    	} 
    }
    per esempio la classe che ho scritto rimane in ascolto e recupera il valore della cella selezionata se cambi qualcosa...
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    126
    Grazie,solo che mi serve un'ascoltatore che quando clicco su una riga per selezionarla e non modifico un determinato campo mi vada a intercettare l'evento e mi restituisca il # di riga selezionata e l'elemento contenuto in un determinato campo es campo 0 che sarebbe il mio ID della tabella nella quale vado a riprendere il record interessato.
    Per il JTree sai niente di nuovo?
    Ciao morphy79 e grazie ancora

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ti ho solo indirizzato verso la soluzione...
    devi andare a cercarti l'interfaccia giusta da implementare come serve a te...
    per i cambiamenti nei campi si implementa la TableModelListener, sinceramente per quando selezioni una riga non lo so, ma se cerchi tra la documentazione delle classi la trovi sicuramente, dev'essere una cosa pittosto banale !!!

    -------------------

    per il jtree con il metodo

    setSelectionRows(int[] rows) passi un array con tutti i numeri di riga da selezionare

    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

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.