我有一组子菜单的公共事件处理程序,例如4个菜单,每个菜单中有4个子菜单。我想要的是跟踪每个子菜单被点击的次数,为此我在主类中使用整数数组作为每个子菜单(用应用程序范围声明)的计数器。在GUI退出后,我需要将此数组中的值写入文件。如何(更重要的是在代码中的哪个位置)我这样做?我的数组显然大小为16,需要初始化为零(我再次在哪里这样做?) 我是Java的新手,但我猜我需要做些什么,
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
将其传递给活动。许多GUI都有一个ActionCommand类型属性,您可以使用所需的任何字符串进行标记。您可以使用它将信息传递到您的活动中。
答案 2 :(得分:0)
主要来自Oracle - How to Write Window Listeners
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
e.g:
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
//Save your Array here
}
});