2013-11-01 2 views
1

코드 :addActionListener를 지정된 유형에 추가 할 수 없습니까?

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 생성자는 객체 목록을 사용하므로 오류가 확실하지 않습니다.

답변

4

작은 오타가 :

class MyListListener implements ActionListeneer { 
              ^

해야

나는 그것을보고하기 전에 다시 읽어 답 몇 번에했다
class MyListListener implements ActionListener { 
+0

. 1 + –

+0

감사합니다. "안전하지 않거나 확인되지 않은 작업 사용"을 제외한 모든 오류가 사라졌습니다. 어떤 아이디어가 해결책인가 – gallly

+0

'JComboBox' 선언/구현을 매개 변수화해야합니다. 'JComboBox serviceList = 새로운 JComboBox <> (서비스);' – Reimeus

관련 문제