Vedi mia risposta qui
Vedi mia risposta qui
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Non capisco come far apparire il JPopupMenu nella JTable
Ho creato il JPopupMenu :
Il mouse listener mi sa che fa acqua :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...")); } }
P.S. Come faccio ad associare il MouseListener alla JTable?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 } }
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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?