Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    Sto implementando un ascoltatore che deve far apparire un piccolo menù quando si clicca con il tasto destro del mouse su una riga di una JTable.
    Come faccio a capire quando il componente è uguale a Row ?
    Vedi mia risposta qui
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Non capisco come far apparire il JPopupMenu nella JTable

    Ho creato il JPopupMenu :

    codice:
    public class PopupMenuJTable extends JPanel {
    	
    	public static JPopupMenu pmenu;
    	
    	public PopupMenuJTable(){
    		
    		pmenu = new JPopupMenu();
    		JMenuItem item;
    		pmenu.add(item = new JMenuItem("Vendi Articolo..."));
    		pmenu.add(item = new JMenuItem("Vedi Caratteristiche..."));
    			
    	}
    
    
    }
    Il mouse listener mi sa che fa acqua :

    codice:
    public class ascoltatoreMouseJTable implements MouseListener {
    	
    	
    	@Override
    	public void mouseClicked(MouseEvent e){
    	        
    			checkPopup(e);
    			
    	}
    	
    	 private void checkPopup(MouseEvent e) {
    	      if (e.isPopupTrigger()) {
    	        PopupMenuJTable.pmenu.show(new PopupMenuJTable() , e.getX(), e.getY());
    	        
    	        
    	      }
    	    }
    
    
    	@Override
    	public void mouseEntered(MouseEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    
    
    	@Override
    	public void mouseExited(MouseEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    
    
    	@Override
    	public void mousePressed(MouseEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    
    
    	@Override
    	public void mouseReleased(MouseEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    
    
    }
    P.S. Come faccio ad associare il MouseListener alla JTable?

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    codice:
    	public static JPopupMenu pmenu;
    	
      .....
    
    	        PopupMenuJTable.pmenu.show(new PopupMenuJTable() , e.getX(), e.getY());
    Fa "acqua" dal punto di vista del design (campo pubblico+statico!) e fa pure "acqua" perché il giro di inizializzazione è quanto meno fumoso.
    È vero che pmenu lo assegni nel costruttore di PopupMenuJTable. Ma alla prima volta che checkPopup viene invocato, PopupMenuJTable.pmenu è ancora a null. Il compilatore fa sì che il costruttore venga comunque invocato ma ormai ha già valutato l'espressione deducendo che pmenu è null.

    Evita come la peste queste cose .....


    E inoltre aggiungo: show ha il primo parametro Component invoker: "the component in whose space the popup menu is to appear". Ma il tuo PopupMenuJTable (JPanel) non è nemmeno a video!
    Ultima modifica di andbin; 11-07-2014 a 18:10
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Credo di aver risolto...

    codice:
    public class ascoltatoreMouseJTable extends MouseAdapter{
    	
    	
    	
    	@Override
    	public void mouseClicked(MouseEvent e){
    		// TODO Auto-generated method stub
    
    
    	}
    
    
    	@Override
    	public void mouseEntered(MouseEvent e) {
    		// TODO Auto-generated method stub	
    	}
    
    
    	@Override
    	public void mouseExited(MouseEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    
    	@Override
    	public void mousePressed(MouseEvent e) {	
    		// TODO Auto-generated method stub
    	}
    
    
    	@Override
    	public void mouseReleased(MouseEvent e) {
    	  
    		if(e.isPopupTrigger())
    			new PopupMenuJTable();
                PopupMenuJTable.pmenu.show(InterfacciaPrincipale.Jtable , e.getX(),e.getY());     
    		
    	}
    	
    }

    codice:
    public class PopupMenuJTable extends JPanel {
    	
    	public static JPopupMenu pmenu;
    	
    	public PopupMenuJTable(){
    		
    		pmenu = new JPopupMenu();
    		JMenuItem item;
    		pmenu.add(item = new JMenuItem("Vendi Articolo..."));
    		pmenu.add(item = new JMenuItem("Vedi Caratteristiche..."));
    			
    	}
    
    
    }//POPUP MENU JTABLE

    In alternativa al campo pubblico + statico come posso fare?

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.