Перекрасить на ребенка jpanel - PullRequest
1 голос
/ 20 января 2010

Хорошо, скажите, что у меня есть JPanel "controls" и jpanel "graphPanel" внутри другой jpanel

public class outer extends JPanel implements ActionListener{
   private JPanel controls,graphPanel;
   private JButton doAction

   public outer(){
      JPanel controls = new JPanel();
      JButton doAction = new JButton("Do stuff");
      doAction.addActionListener(this);
      controls.add(doAction);

      JPanel graphPanel = new JPanel();
      this.add(controls);
      this.add(graphPanel);
   }



public void actionPerformed(ActionEvent e) {
    if(e.getSource()==doAction){
        //How do I fire paintComponent of controls JPanel on this click
}

Как сделать перерисовку "graphPanel" после нажатия моей кнопки

1 Ответ

1 голос
/ 20 января 2010

doAction и graphPanel объявляются дважды - один раз на уровне класса, затем снова в методе:

   private JPanel controls,graphPanel; // declared here first
   private JButton doAction; // declared here first

   public outer(){
      JPanel controls = new JPanel(); // Whoops, declared here again
      JButton doAction = new JButton("Do stuff"); // Whoops, declared here again
      doAction.addActionListener(this);
      controls.add(doAction);

      JPanel graphPanel = new JPanel(); // Whoops, declared here again
      ...

В методе удалите объявление и сделайте им простые присваивания, например:

controls = new JPanel(); // no leading 'JPanel'

Сделайте это, и дополнительный код перекраски не вызовет NPE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...