Avatar billede mungojerrie Nybegynder
02. juli 2004 - 10:59 Der er 2 kommentarer og
1 løsning

Popmenu bliver ikke vist på min JTable

Jeg har lidt problemer med visning af min popupmenu. Den bliver skabt fint nok, men bliver bare ikke vist ved højreklik på min JTable

De tre klasser jeg har til formålet bliver vist her:

public class ContextMenu extends JPopupMenu {
       
    public ContextMenu() {}
   
    public void addActionMap(ActionMap map){
        if(map.size() != 0){
            this.addSeparator();
        }
       
        Object[] temparr = map.keys();
        for(int i = 0; i < map.size(); i++){
            this.add(new JMenuItem(temparr[i].toString()));
        }
    }
}
---------------------------------------------------------------------------------
public class NumberActionMap extends OrderedActionMap {

    private static NumberActionMap map = null;
    private static ArrayList array = null;
    private static String phonenumber = "";
   
    public NumberActionMap(){
        Action search = new AbstractAction(){
            public void actionPerformed(ActionEvent e){
                GUI.getGUI().getDesign().getTree().setSearchNumber(phonenumber);
            }
        };
        put("Vis historik", search);
       
        Action sendMulti = new AbstractAction(){
            public void actionPerformed(ActionEvent e){
               
            }
        };
        put("Send multibesked", sendMulti);
       
        Action sendSingle = new AbstractAction(){
            public void actionPerformed(ActionEvent e){
               
            }
        };
        put("Send besked", sendSingle);

        Action showdetail = new AbstractAction(){
            public void actionPerformed(ActionEvent e){
               
            }
        };
        put("Vis detaljer/tilføj til arkiv", showdetail);       
       
        //tilføj til array fra OrderedActionMap klassen
        order.add("Vis historik");
        order.add("Send multibesked");
        order.add("Send besked");
        order.add("Vis detaljer/tilføj til arkiv");
    }
   
    public void setNumber(String number){
        NumberActionMap.phonenumber = number;
    }
   
}

---------------------------------------------------------------------------------
public class CustomerTable extends JTable {
   
    private JTable table = null;
   
    public CustomerTable(TableModel tm){
        super(tm);
        table = this;

   
        final ContextMenu popupmenu = new ContextMenu();
        NumberActionMap map = new NumberActionMap();
        popupmenu.addActionMap(map);

        //tilføj mouselistener
        addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON3){
               
                    int row = getSelectedRow();
                    int col = getSelectedColumn();
                    if(col >= 0 && row >= 0){
                        String nr = table.getValueAt(row, 0).toString();                   
                    }
                   
                    // Vis context menu
                    System.out.println("Vis context-menu");
                    popupmenu.show();
                }
            }
        });

    }
}

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

Håber der er nogen der kan gennemskue hvad der går galt/jeg gør galt.
Avatar billede conrad Nybegynder
02. juli 2004 - 11:25 #1
prøv at ændre din public void mouseClicked til MousePressed og din show() til
show( e.getComponent(),e.getX(), e.getY());
Avatar billede mungojerrie Nybegynder
02. juli 2004 - 11:29 #2
blæret....smid lige et svar :-)
Avatar billede conrad Nybegynder
02. juli 2004 - 13:16 #3
et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester