2015-11-22 2 views
0

Я пытаюсь сделать кнопку, которая меняет цвет при нажатии на нее:Java объект доступа из другого метода

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

public class buttonPrototype extends JPanel implements ActionListener { 
public buttonPrototype() { 
    boolean READY = false; 
    ... 
    JButton ready = new JButton("READY"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.weightx = 0.5; 
     c.gridx = 0; 
     c.gridy = 6; 
     c.gridwidth = 4; 
     p.add(ready, c); 
    ... 
    ready.addActionListener(this); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 
    if ("READY".equals(e.getActionCommand())) { 
     if (READY == true) { 
      READY = false; 
      ready.setIcon("images/notready.png"); 
     } else { 
      READY = true; 
      ready.setIcon("images/ready.png"); 
     } 
    } 
} 
} 

Однако, я не в состоянии получить SetIcon(), чтобы работать, потому что готов объект находится в другом методе. Я прочитал несколько онлайн-руководств, но до сих пор не понимаю, как ссылаться на этот объект во втором классе. Как мне это сделать?

+0

'JButton готов; public buttonPrototype() { ready = new JButton ("READY"); '?? –

ответ

0

В вашем случае я вижу два простых решения: вы должны использовать один из них, а не оба.

Первое:

JButton ready = new JButton("READY"); 

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

ready.setIcon("images/ready.png"); 

ИЛИ

Ваш метод передается событие , Вы можете получить исходный код (который на самом деле кнопка) по телефону:

((JButton)e.getSource).setIcon("images/ready.png"); 
0

Я думаю, вы должны поставить готовую переменные внешний метод так:

 
public class buttonPrototype extends JPanel implements ActionListener { 

    boolean READY; 
    JButton ready; 

    public buttonPrototype() { 
     READY = false; 
     ... 
     ready = new JButton("READY"); 
     ... 
     ready.addActionListener(this); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     ... 
    } 
} 
+0

Я думаю, buttonPrototype - это конструктор, вызывающий создание класса – Arnas

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