【问题标题】:Adding mouse listener to java swt image将鼠标侦听器添加到 java swt 图像
【发布时间】:2012-07-19 18:15:04
【问题描述】:

好的,所以我创建了这样的图像:

Image deleteImage = new Image(viewer.getTable().getDisplay(),
                        Provider.PATH_TO_DELETE_ICON);

如何添加鼠标侦听器以便知道何时单击图像?

这是我的标签提供者类:

private class MyLabelProvider extends LabelProvider implements
            ITableLabelProvider {

        @Override
        public Image getColumnImage(Object element, int columnIndex) {
            if (columnIndex == 3) {
                Image deleteImage = new Image(viewer.getTable().getDisplay(),
                        Provider.PATH_TO_DELETE_ICON);
                return deleteImage;
            }
            if (columnIndex == 4) {
                Image editImage = new Image(viewer.getTable().getDisplay(),
                        Provider.PATH_TO_EDIT_ICON);
                return editImage;
            } else
                return null;
        }

        public String getColumnText(Object element, int index) {
            Provider provider = (Provider) element;
            switch (index) {
            case 0:
                return Integer.toString(provider.getId());
            case 1:
                return provider.getName();
            case 2:
                return provider.getBulstat();
            default:
                return "";
            }
        }

    }

【问题讨论】:

    标签: java eclipse image swt listener


    【解决方案1】:

    你可以创建一个Label,通过它设置你的图片

    label.setImage(deleteImage)
    

    之后您可以执行以下操作:

    label.addMouseListener(new MouseListener() {
    
            @Override
            public void mouseUp(MouseEvent arg0) {
                System.out.println("Click");
            }
    
            @Override
            public void mouseDown(MouseEvent arg0) {
    
            }
    
            @Override
            public void mouseDoubleClick(MouseEvent arg0) {
            }
        });
    

    【讨论】:

    • 这将是解决方案,但它需要是图像,因为我是从查看器的 LabelProvider 获取的。如果您能告诉我 LabelProvider 的 getImage 方法如何返回 Button 而不是解决方案的图像。
    • 创建自己的LabelProvider 并覆盖getImage() 方法?只是猜测,还没有使用LabelProvider。刚刚意识到,你不能重写一个方法,如果你改变了返回类型......那我不知道该怎么做。
    • LabelProvider 是用在 TableViewer 中的,对吧?你不能给那个添加一个监听器吗?您使用哪个 LabelProvider?
    • 我可以,但是鼠标事件的来源变成了 TableViewer 的表格...我需要来源是 Image 对象。
    • 好的,如果你在你的LabelProvider 中实现MouseListener 会怎样?那行得通吗?抱歉,我有点迷路了……
    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2013-03-09
    • 2012-08-01
    • 2023-03-14
    相关资源
    最近更新 更多