2011-11-22 25 views
0

我有一個共同的事件處理程序的一組子菜單,說4件菜單,每個子菜單4。我想要跟蹤每個子菜單被點擊的次數,並且爲此我使用整數數組作爲每個子菜單(在應用程序範圍內聲明)的計數器。在GUI退出後,我需要將此數組中的值寫入文件。如何(並且更重要的是在代碼中)我能做到這一點?我的數組大小16的明顯,需要初始化爲零(同樣,我在哪裏做呢?) 我是新來的Java,但我猜,我需要做這個事情,保持跟蹤什麼對象觸發一個共同的事件

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

回答

0

將它傳遞給事件。許多GUI都有一個ActionCommand類型屬性,您可以使用任何字符串進行標記。您可以使用它將信息傳遞到您的活動中。

0

大多來自Oracle - How to Write Window Listeners

  • 您需要使用setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
  • 你需要添加的WindowListener
  • 你需要重寫的WindowListener的的windowClosing()方法

例如:

this.addWindowListener(new java.awt.event.WindowAdapter() { 
    public void windowClosing(java.awt.event.WindowEvent e) { 
    //Save your Array here 
    } 
}); 
1

首先,在初始化菜單項的類中,需要聲明一個整數數組。這些將被初始化爲0自動:

private int[] counters = new int[16]; 

以後每次初始化一個菜單項時,必須將偵聽器添加到增加相應的計數器元素的項目:

private class CounterIncrementActionListener implements ActionListener { 
    private int index; 

    private CounterIncrementActionListener(int index) { 
     this.index = index; 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     counters[index] = counters[index] + 1; 
    } 
} 

... 
firstItem.addActionListener(new CounterIncrementActionListener(0)); 
secondItem.addActionListener(new CounterIncrementActionListener(1)); 
... 

現在,當幀關閉時,能夠將計數器陣列保存到文件中,您需要向幀添加窗口監聽器:

frame.addWindowListener(new WindowAdapter() { 

    @Override 
    public void windowClosing(WindowEvent e) { 
     saveCounters(); 
     System.exit(0); 
    } 
}