我創建了一個應用程序,它將事件附加到JButton和其他在GUI類中多次實例化的swing組件類。從外部類創建子類的對象實例
MenuItemEventHandler類附加到每個菜單項。當MenuItemEventHandler類是外部的時候,這工作得很好。不過,我需要把它放在GUI類而不是外部。
我剩下的問題是不能從同一包中的另一個外部類引用事件處理程序子類。是否有可能這樣做?
下面是guiclass和事件處理程序子類
public class GUIClass {
// gui behaviour
public class MenuItemEventHandler extends AbstractAction {
private String aVariable;
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent arg0) {
// update a JList with added item
}
}
下面是外部類我想引用到事件處理程序,所以我可以將它連接到GUI對象的集合。
它引用了我無法實現的MenuItemEventHandler類。
public class MenuItem {
ResturantGUI.MenuItemEventHandler action = ResturantGUI.new MenuItemEventHandler(this.item);
newButton.setAction(action);
// attach the event to the menu item
這氣味是一個可能的[XY問題(HTTP:// mywiki。 wooledge.org/XyProblem)。你爲什麼說,'「但是我需要把它放在GUI類而不是外部。」爲什麼班級本身必須是內部的?幾乎從來沒有絕對需要這一點。 – 2015-04-01 19:37:27
你說*我不能達到*,但不是爲什麼你不能或在嘗試時遇到什麼問題。 – WonderWorld 2015-04-01 19:44:12
再次您好,我試圖在菜單項觸發actionPerformed事件後填充DefaultListModel。這個問題存在於我不知道如何將操作執行事件中的數據傳遞給GUI的情況,而沒有導致產生不必要對象的音調的重疊。 – Machiinate 2015-04-01 19:49:50