Общение между JPanels - PullRequest
       42

Общение между JPanels

0 голосов
/ 18 марта 2012

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

У меня есть JFrame, в котором есть два JPanels, один из которых является отдельным классом (я расширил JPanel),В идеале я хотел бы «отправить и обработать» или уведомить другой объект JPanel на JFrame.

У меня есть массив JButton в пользовательском классе JPanel, к которому я хотел бы добавить прослушиватель событий,После нажатия кнопки JButton я хотел бы что-то изменить на другом JPanel.

Я действительно не уверен, как это сделать, поэтому я переместил обработчик событий в класс JFrame и попытался выполнитьследующее:

panel.buttonArray[i][j].addActionListener(this);

Однако это не сработало вообще.К сожалению, «Затмение» тоже не жаловалось ...

Какие-нибудь советы, как мне этого добиться?

Это было ужасно объяснено, извините.

1 Ответ

2 голосов
/ 18 марта 2012

Думайте об этом не с точки зрения панелей, а с точки зрения объектов. Пока объект, скажем, имеет имя object77, имеет ссылку на другой объект, назовите его object42, object77 может вызывать методы для object42.

  object77.methodInObject42();

  panel77.methodInPanel42();

Что касается обработчика событий, то

   buttonOnPanelXX.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e) {
             panel77.methodInPanel42();
       }});

или даже лучше ...

    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            SwingUtilities.invokeLater(new Runnable(){
               public void run() {
                  panel77.methodInPanel42();
               }});
            }});
...