java - 如何将 MouseListener 添加到 JList 模型

标签 java swing jlist mouselistener jpopupmenu

我有简单的代码示例。如何添加鼠标监听器以显示所选 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);
    }
}

最佳答案

这是我发现的一篇很棒的文章教程,它帮助我完成了您想要完成的任务。

http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html#popup

我还发现了此堆栈溢出文章中的链接

How do I create a right click context menu in Java Swing?

希望这有帮助

关于java - 如何将 MouseListener 添加到 JList 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363397/

相关文章:

java - 在java中更新文本文件的特定部分

java - 如何在 Java 中从字符串设置字体

java - 检查 JComboBox 值

Java Swing - 使用 TransferHandler 动态更改 JList

java - 为 Hadoop 环境配置 Eclipse(在 Windows 上)(在具有 SUSE Linux Enterprise Server 11 的虚拟机上)

java - 我想知道编译时决策的含义

java - Guice:在没有 @Singleton 或以其他方式修改实现的情况下配置单例

java - 如何更改实现 MigLayout 的 JDesktopPane 中显示的 JInternalFrame 的大小?

java - 单击 JFrame 中的 JButton 时如何更改现有图像? ( java )

java - 管理 main 函数