2013-02-06 44 views
1

我有一個Swing類:如何通過構造函數的參數在吉斯

public class PopUpContextMenu extends JPopupMenu { 
    public PopUpContextMenu() { 
     super(); 

     JMenuItem loginMenuItem = new LoginMenuItem("Login"); 
     JMenuItem logoutMenuItem = new LogoutMenuItem("Logout"); 
     add(loginMenuItem); 
     add(logoutMenuItem); 
    } 
} 

我笏去改變它使用吉斯這樣兩個「新」的聲明可以被刪除。我想是這樣的:

public class PopUpContextMenu extends JPopupMenu { 
    @Inject 
    public PopUpContextMenu(JMenuItem loginMenuItem, JMenuItem logoutMenuItem) { 
     super(); 
     add(loginMenuItem); 
     add(logoutMenuItem); 
    } 
} 

我的問題是如何在吉斯配置綁定,這樣我可以構建loginMenuItem時傳遞字符串「登錄」,並通過字符串「註銷」建設logoutMenuItem什麼時候?

非常感謝

回答

1

您可以使用該@Named註釋:

在你的類:

@Inject 
@Named("LOGIN") 
JMenuItem loginMenuItem; 

@Inject 
@Named("LOGOUT") 
JMenuItem logoutMenuItem 

這樣,就要在你的吉斯模塊configure()方法,你這樣做:

bind(JMenuItem.class).annotatedWith(Names.named("LOGIN")).toInstance(new LoginMenuItem("Login")); 
bind(JMenuItem.class).annotatedWith(Names.named("LOGOUT")).toInstance(new LoginMenuItem("Logout")); 
相關問題