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

    Java: setRowSelectionInterval non mi seleziona

    Ciao a tutti,
    ho la necessità che automaticamente si selezioni la riga quando mi genera il popup, ma ho provato in mille modi e sta cavolo di riga non viene mai selezionata....

    codice:
    private void showPopup(MouseEvent me) {
    	if (pm.isPopupTrigger(me)) {
    		java.awt.Point p = me.getPoint();
    		rowToDelete = jTable1.rowAtPoint(p);
    		int colp = jTable1.columnAtPoint(p);
    		if (rowToDelete != -1 && colp != -1) {
    			pm.show(jTable1, p.x, p.y);
    			jTable1.setRowSelectionAllowed(true);
    			jTable1.setRowSelectionInterval(rowToDelete, rowToDelete);
    
    		}
    	}
    }
    Dovrebbe essere una banalità ma ci sto perdendo un giorno....

    Grazie x ogni aiuto
    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    fatti stampare un po' di valori a console:
    codice:
    private void showPopup(MouseEvent me) {
    	if (pm.isPopupTrigger(me)) {
    		java.awt.Point p = me.getPoint();
    		rowToDelete = jTable1.rowAtPoint(p);
    		int colp = jTable1.columnAtPoint(p);
    // Aggiunta
    System.out.println(rowToDelete+" "+colp);
    		if (rowToDelete != -1 && colp != -1) {
    			pm.show(jTable1, p.x, p.y);
    			jTable1.setRowSelectionAllowed(true);
    			jTable1.setRowSelectionInterval(rowToDelete, rowToDelete);
    
    		}
    	}
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    lo facevo già...li ho tolti dal codice che ho postato xche mi sembravano inutili...
    comunque per la cronaca è la riga giusta....(la colonna non mi interessa più di tanto)
    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

  4. #4
    up
    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
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class SelRow extends JFrame {
    
       private class MouseClick extends MouseAdapter {
          @Override
          public void mousePressed(MouseEvent me) {
             showPopup( me );
          }
    
          @Override
          public void mouseReleased(MouseEvent me) {
             showPopup( me );
          }
       }
    
    
       private JTable table;
       private JPopupMenu pm;
    
       private String[][] data = {{"R1, C1", "R1, C2", "R1, C3"},
                                  {"R2, C1", "R2, C2", "R2, C3"},
                                  {"R3, C1", "R3, C2", "R3, C3"},
                                  {"R4, C1", "R4, C2", "R4, C3"}};
    
       private String[] colonne = {"Colonna1", "Colonna2", "Colonna3"};
       public SelRow() {
          Container c = getContentPane();
          c.setLayout( new BorderLayout() );
    
          table = new JTable(data, colonne);
          table.addMouseListener( new MouseClick() );
          table.setRowSelectionAllowed(true);
          table.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
          JScrollPane jsp = new JScrollPane( table );
    
          pm = creaMenu();
    
          c.add(jsp, BorderLayout.CENTER);
    
          setTitle("Prova popup e selezione");
          setSize(800, 600);
          setDefaultCloseOperation( EXIT_ON_CLOSE );
          setLocationRelativeTo( null );
          setVisible( true );
       }
    
       private JPopupMenu creaMenu() {
          JPopupMenu menu = new JPopupMenu();
          for(int i=0; i<3; i++) menu.add( new JMenuItem("Item " + i) );
          return menu;
       }
    
       private void showPopup(MouseEvent me) {
          if (pm.isPopupTrigger(me)) {
             Point p = me.getPoint();
             int rowToDelete = table.rowAtPoint(p);
             int colp = table.columnAtPoint(p);
             if ((rowToDelete != -1) && (colp != -1)) {
                pm.show(table, p.x, p.y);
                table.setRowSelectionInterval(rowToDelete, rowToDelete);
             }
          }
       }
    
       public static void main(String[] args) {
          SelRow sr = new SelRow();
       }
    }
    A me funziona.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    non ci crederai ho spostato due righe e adesso funziona...
    Grazie.
    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

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.