簡體   English   中英

變量和方法以及actionlisteners

[英]variables and methods and actionlisteners

我有這個(部分偽)代碼

class a {
  void b()
  {
    int d = 0;
    JButton c = new JButton();
    c.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e)
      {
        d = 1;
      }
    });
  }
}

但是,它不起作用,eclipse建議將最終標識符添加到d,但這使得值無法改變。 很抱歉,如果這是一個愚蠢的問題,但很難為谷歌提出類似這樣的問題...我也無法在杠桿上聲明變量高於方法b。

您可能希望在方法之外移動d的聲明。

class a {
  int d = 0;

  method b() {
    JButton c = new JButton();
    c.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
      d = 1;
    }
  }

}

..並格式化你的代碼。

這是因為代碼:

c.addActionListener(new ActionListener()
          {
             public void actionPerformed(ActionEvent e)
             {
                d = 1;
             }
          });//a little corrected here

實際上創建一個新的嵌套類並overrides actionPerformed(ActionEvent e)方法。 由於它不是同一個類的一部分,因此安全 java不允許該嵌套類方法訪問除聲明的final之外的局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM