您的位置:首页 > 其它

给JList中的Item添加右键点击弹出菜单事件

2011-07-17 01:28 1336 查看
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;

public class JListTest extends JFrame {

JPopupMenu popupMenu =null;
JList list=null;
JPanel mainPanel=null;
JScrollPane scrollPane=null;

public JListTest() {
initComponent();
setSize(200, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}

private void initComponent() {
mainPanel = new JPanel();
scrollPane = new JScrollPane();
popupMenu = new JPopupMenu();
popupMenu.add(new JMenuItem("Open")); //添加菜单项Open
popupMenu.add(new JMenuItem("Save"));
mainPanel.setLayout(new BorderLayout());
list = new JList();
list.setModel(new DefaultListModel());

list.addMouseListener(new MouseAdapter() {

@Override
public void mouseClicked(MouseEvent e) {
// maybeShowPopup(e);
}

@Override
public void mousePressed(MouseEvent e) {
list.setSelectedIndex(list.locationToIndex(e.getPoint())); //获取鼠标点击的项
maybeShowPopup(e);

}

@Override
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
//弹出菜单
private void maybeShowPopup(MouseEvent e) {
if (e.isPopupTrigger()&&list.getSelectedIndex()!=-1) {

//获取选择项的值
Object selected = list.getModel().getElementAt(list.getSelectedIndex());
System.out.println(selected);
popupMenu.show(e.getComponent(),e.getX(), e.getY());
}
}

});

list.setListData(new Object[] { "name", "age", "sex", "name", "age",
"name", "age", "name", "age" });
scrollPane.setViewportView(list);
mainPanel.add(scrollPane, BorderLayout.CENTER);
this.add(mainPanel);
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new JListTest();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐