在Java中定义动态事件处理程序

时间:2013-11-07 15:24:52

标签: java arrays events event-handling

假设我在Java中定义了两个数组。第一个数组有m个单元格,第二个数组有n个单元格。假设每个单元格可以具有01值。

在这个程序中,第一个数组的每个单元都将连接第二个数组的一个单元,但是我们不知道哪个单元将连接到第二个数组的哪个单元(这个连接完全合乎逻辑,例如我们只是知道array1[3]array2[7])相关。

所以现在我想为这些关系中的每一个定义一个事件处理程序,因此当其中一个单元格从1波动到0时,其配对单元格会发生波动。实际上我想以运行时和动态的方式定义事件处理程序,因为在它之前,我不知道array1中的哪个单元格将与array2中的哪个单元格配对

有没有解决方案?

如果您认为我可以在没有动态事件处理程序的情况下解决此问题,请告诉我您的解决方案。

1 个答案:

答案 0 :(得分:1)

这是一种在不使用事件处理程序的情况下解决此问题的方法。看看这是否适用于您正在做的事情。

首先,让我们使用两个m x 1n x 1的二维数组,而不是两个数组。

int[][] array1 = new int[m][];
int[][] array2 = new int[n][];
for (int i = 0; i < m; i++)
    array1[i] = new int[] { /* your code */ ? 1 : 0 };
for (int i = 0; i < n; i++)
    array2[i] = array1[ /* your code */ ];

第一个/* your code */是您选择将10放入array1的每个元素的条件。第二个/* your code */是确定array1的哪个元素与array2的每个元素相对应的方法。

现在array2中的每个元素也是array1的元素,因此当您将其中一个数组中的值从0更新为1时,它也是在另一个数组中更新。

array2[7] = array1[3];
array1[3][0] = 0;
System.out.println(array2[7][0]); // prints "0"
array1[3][0] = 1;
System.out.println(array2[7][0]); // prints "1"