2013-05-03 89 views
0

我有簡單的代碼示例。我如何添加鼠標監聽器來顯示簡單的菜單(當我點擊鼠標右鍵)選定的JList項目?另外:我怎樣才能爲鼠標左鍵添加鼠標監聽器?如何將MouseListener添加到JList模型

像這樣: enter image description here

這裏是我的代碼:

package test; 

import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 

import javax.swing.AbstractListModel; 
import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JScrollPane; 
import javax.swing.SwingUtilities; 

public class Test implements ActionListener { 

    private JList list; 
    private MyJListModel model; 

    public Test() { 
     JFrame frame = new JFrame("Test"); 
     frame.setMinimumSize(new Dimension(400,200)); 

     JMenuBar menubar = new JMenuBar(); 
     JMenu filemenu = new JMenu("File"); 
     JMenuItem addItem = new JMenuItem("Add"); 
     filemenu.add(addItem); 
     menubar.add(filemenu); 

     addItem.addActionListener(this); 

     model = new MyJListModel(); 
     list = new JList(model); 
     JScrollPane scrollpane = new JScrollPane(list); 

     frame.add(scrollpane); 
     frame.setJMenuBar(menubar); 
     frame.setVisible(true); 
    } 

    public void actionPerformed(ActionEvent event) { 
     String pushedItem = event.getActionCommand(); 
     if(pushedItem.equals("Add")) { 
      model.addElement("Item"); 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new Test(); 
      } 
     }); 
    } 
} 

class MyJListModel extends AbstractListModel { 
    private ArrayList<String> arraylist = new ArrayList<String>(); 

    public MyJListModel() { 
     super(); 
    } 

    @Override 
    public int getSize() { 
     return arraylist.size(); 
    } 

    @Override 
    public Object getElementAt(int i) { 
     return arraylist.get(i); 
    } 

    public void addElement(String string) { 
     arraylist.add(string); 
     this.fireContentsChanged(this, 0, arraylist.size() - 1); 
    } 
} 

回答

2

你的MouseListener添加到表,而不是模型。

Table.addMouseListener(new MouseAdapter() 
    { 
     public void mouseReleased(MouseEvent e) 
     { 
      if(e.isPopupTrigger()) 
      { 
       onShowPopup(e); 
      } 
     } 

     public void mousePressed(MouseEvent e) 
     { 
      if(e.isPopupTrigger()) 
      { 
       onShowPopup(e); 
      } 
     } 
    });