2013-11-07 7 views
0

Предположим, что я определил два массива в Java. Первый массив имеет ячейки m, а второй - n. Предположим, что каждая ячейка может иметь значение 0 или 1.Определить динамический обработчик событий в Java

В этой программе каждая ячейка первого массива присоединяется к одной из ячеек второго массива, но мы не знаем, какая из них будет связана с ячейкой второго массива (это соединение является полностью логичным, например, мы просто знаю array1[3] связан с array2[7]).

Итак, теперь я хочу определить обработчик событий для каждого из этих отношений, поэтому, когда одна из ячеек изменяется от 1 до 0, его парная ячейка колеблется. На самом деле я хочу определить обработчик событий во время выполнения и динамически, потому что перед этим я не знаю, какая из ячеек в array1 будет парой, с которой одна из ячеек в array2.

Есть ли решение для этого?

Если вы считаете, что я могу решить эту проблему без динамического обработчика событий, сообщите мне о своем решении.

+1

Вы не можете прослушивать изменения массива с помощью обработчика событий на Java. – isnot2bad

+0

Вы имеете в виду, что нет никакого способа отслеживать изменения ячеек массива? Мы не можем определить обработчик события, чтобы уведомить нас, когда значение ячейки изменилось? – Chavoosh

+0

Нет. Вам нужно будет создать свой собственный объект с обработчиком событий и использовать два списка, чтобы собирать сколько угодно объектов. –

ответ

1

Вот способ решить эту проблему без использования обработчика событий. Посмотрите, работает ли это на то, что вы делаете.

Прежде всего, вместо двух массивов, давайте использовать два 2D-массива, которые являются m x 1 и n 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 */ ваше условие для выбора положить либо 1 или 0 в каждый элемент 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" 
+0

Я думаю, что ваше решение - это мой ответ, можете ли вы подробно описать свой ответ? Я не знаю, что я должен писать вместо '/ * вашего кода * /' ... вы можете помочь мне понять это? – Chavoosh

+1

@Chavoosh Я добавил объяснение в ответ. Причина, по которой я не могу сказать вам, что писать вместо '/ * вашего кода * /', заключается в том, что вы не сказали нам, как вы определяете, какие элементы являются «1» или «0», или как вы выбираете корреспонденцию между элементами 'array1' и' array2'. –

+0

Спасибо, дорогой @Nathaniel за ваш ответ ... У меня есть другой вопрос, в разделе 'for' вы используете' array1' и 'array2' одним' [] ', в то время как вы определяете массив 2d, что это значит? – Chavoosh

Смежные вопросы