Реализация кроссбраузерной функции добавления событий Javascript: используйте attachEvent / addEventListener vs inline events

Чтобы добавить события, мы могли бы используйте это простое 1-е решение :

function AddEvent(html_element, event_name, event_function) 
{       
   if(html_element.attachEvent) //Internet Explorer
      html_element.attachEvent("on" + event_name, function() {event_function.call(html_element);}); 
   else if(html_element.addEventListener) //Firefox & company
      html_element.addEventListener(event_name, event_function, false); //don't need the 'call' trick because in FF everything already works in the right way          
} 

или это 2-е решение (которое добавляет встроенные события):

function AddEvent(html_element, event_name, event_function) 
{       
   var old_event = html_element['on' + event_name];
   if(typeof old_event !== 'function')
      html_element['on' + event_name] = function() { event_function.call(html_element); };
   else
      html_element['on' + event_name] = function() { old_event(); event_function.call(html_element); };
}

Это оба кроссбраузера и могут быть используется таким образом: Мне нужно иметь фоновое изображение в моем java-приложении и при каком-то событии создать другую графику поверх этого изображения. Я думал, что воспользуюсь JPanel для рисования фонового изображения ...

Короче говоря, мне нужно иметь фоновое изображение в моем java-приложении, и при каком-то событии создать другую графику поверх этого изображения.

Я думал, что буду использовать JPanel, чтобы нарисовать фоновое изображение, добавить его в мой JFrame в начале программы, а затем добавить другие JPanel поверх этого при определенных событиях. Проблема в том, что Swing дает JPanels, добавленным первым, наивысший индекс Z, поэтому то, что должно быть моим фоном, отображается поверх всего.

Есть ли способ контролировать Z-индекс / порядок JPanel, или я ошибаюсь?

8
задан tybro0103 21 September 2010 в 18:07
поделиться