2011-10-03 31 views
1

我寫了一個簡單的畫圖程序,併爲創建菜單,我用這個源,http://download.oracle.com/javase/tutorial/displayCode.html?code=http://download.oracle.com/javase/tutorial/uiswing/examples/components/MenuLookDemoProject/src/components/MenuLookDemo.java在項目中使用不同的Java代碼(如何到達變量)

因此,在我的程序,以顯示菜單,我只添加了這行:

MenuDemo demo = new MenuDemo(); 
    frame.setJMenuBar(demo.createMenuBar()); 

當我啓動程序,菜單成功的作品,但在另一方面,例如,當我點擊菜單上的某物,在方法「的actionPerformed」我想改變我的計劃的布爾變量。但是「actionPerformed」存在於「MenuLookDemo.java」中,因此我無法訪問變量。

你能提出一個解決方案嗎?

感謝

+0

你應該真的開始閱讀關於面向對象的設計。這是一個OO-101級別的問題。 – Romain

+2

問這裏的OO-101級別的問題不好嗎?我認爲問這種東西是完全可以的。 –

回答

1

也許你可以重寫類MenuDemo和你的對象傳遞給MenuDemo訪問您的變量。

class MenuDemo{ 
    YourType obj; 
    MenuDemo(YourType obj){ 
    this.obj = obj; 
    } 
    // Now you can access elements of obj 
} 
+0

皮卡爾德是對的 - MenuDemo需要某種方式將信息發送到您的程序(實際上 - 您的對象,在他的示例中表示爲'obj')。 –

+0

我試過這個,但主要問題是,我想在標記「actionPerformed」事件時影響一些變量。我向MenuDemo添加了參數,但是我不能將此對象發送到「actionPerformed」方法,因此我無法到達該變量 – CanCeylan

+0

您的actionPerformed在哪裏?你可以在這裏粘貼你的項目結構嗎?我以爲MemoDemo中的actionPerformed,所以菜單元素可以處理它收到的操作。 – Pikaurd

0

大廈掉什麼Pikaurd具有以上,這樣做:

public class MyType { 
    int x; 
    public void doTheNeedful() { 
    x = 5; 
    } 
} 

然後確保MenuDemo包含MyType類的字段obj。在actionPerformed()內部,請致電obj.doTheNeedful()

我故意不只是給你這個代碼;上面的句子應該足以讓你弄清楚。

相關問題