java - 无法将 addActionListener 添加到给定类型?

标签 java swing awt actionlistener

代码:

import java.awt.*;
import javax.swing.*;
import java.rmi.*;
import java.awt.event.*;

public class ServiceBrowser{
    JPanel mainPanel;
    JComboBox serviceList;
    ServiceServer server;

    public void buildGUI(){
        JFrame frame = new JFrame("RMI Browser");
        mainPanel = new JPanel();
        frame.getContentPane().add(BorderLayout.CENTER, mainPanel);

        Object[] services = getServiceList();
        //rmi registry lookup, get stub, call getServiceList

        serviceList = new JComboBox(services);
        //add services(array of objects) to Jcombobox,
        //knows how to make displayable strings out of 
        //each thing in array

        frame.getContentPane().add(BorderLayout.NORTH, serviceList);
        serviceList.addActionListener(new MyListListener());

        frame.setSize(500,500);
        frame.setVisible(true);
    }//end buildGUI

    void loadService(Object serviceSelection){
        try{
            Service svc = server.getService(serviceSelection);
            mainPanel.removeAll();
            mainPanel.add(svc.getGuiPanel());
            mainPanel.validate();
            mainPanel.repaint();
        } catch(Exception ex){
            ex.printStackTrace();
        }//add actual service to gui after user selects one
        //(this method called by event listener on combobox)
        //call getService() on remote server(stub), pass it
        //same string in the list, server returns actual service(serialized)
        //and call getGuiPanel on service and add result (jpanel) to browser mainpanel
    }

    Object[] getServiceList(){
        Object obj = null;
        Object[] services = null;
        try{
            obj = Naming.lookup("rmi://127.0.0.1/ServiceServer");
        } catch(Exception ex){
            ex.printStackTrace();
        }
        server = (ServiceServer) obj;
        //cast the stub to remote interface so we can call getServiceList on it

        try{
            services = server.getServiceList();

        }catch(Exception ex){ex.printStackTrace();}
    }

    class MyListListener implements ActionListneer{
        public void actionPerformed(ActionEvent ev){
            Object selection = serviceList.getSelectedItem();
            loadService(selection);
            //user made selection from jcombobox list, take selection
            //load appropriate service
        }
    }

    public static void main(String[] args){
        new ServiceBrowser().buildGUI();
    }
}

错误:

row 25: addactionlistener in class JComboBox<e> cannot be applied to given type 
    serviceList.addActionListener(new MyListListener());
ServiceBrowser.java uses unchecked or unsafe operations

我知道这意味着某个地方有一个集合没有声明它的类型,但我不确定是什么问题。我认为这与 serviceList 获取对象数组有关? JComboBox 构造函数说它需要一个对象列表,所以我不确定错误。

最佳答案

小错别字:

class MyListListener implements ActionListeneer {
                                            ^

应该是

class MyListListener implements ActionListener {

关于java - 无法将 addActionListener 添加到给定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19736329/

相关文章:

Java : Saving uploaded png image

java - 动态创建时 Jlabel 数组在 netbeans 中不可见

java - 在 Netbeans 中显示文件夹中的随机图像到 JLabel

java - Java和GUI-根据MVC模式,ActionListeners在哪里?

java - Hibernate HBM 映射问题

java - 在 Sandbox 上使用 Paypal Express Checkout,安全 header 无效,API 凭证中没有错误

java - 使用 Java Enum 表示 BigDecimal 常量

java - 如何在设置默认SIM卡的双SIM卡中在Android中发送短信?

java - 如何使用 KeyListener 根据按下的键显示不同的字符串?

java - 系统外观和感觉是否会改变元素大小?