0
私はYouTubeビデオで使用するような 'Troll'のようなアプリケーションを作成しており、JFrameを1/2秒ごとに画面にジャンプさせたいとします。相続人.setLocationがタイマーで動作しない
私のコード:
package troll1;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.Timer;
public class troll extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
public static void main(String args[]) {
troll w1 = new troll();
w1.setVisible(true);
w1.setSize(500,500);
}
public Random ran;
public int random;
public troll w1;
public Timer t;
public troll() {
Timer t = new Timer(500, this);
t.start();
}
@Override
public void actionPerformed(ActionEvent arg0) {
Random ran = new Random();
for(int counter=1; counter<=1;counter++) {
int random = 1+ran.nextInt(500);
w1.setLocation(random, random);
}
}
}
問題であり、私はこのコードを実行すると、私はこのエラーがなくなって得れば、私が作るだろう、また、エラーが言っ
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at troll1.troll.actionPerformed(troll.java:37)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
を取得そのため、JFrameは500,500以下でなく、画面全体にジャンプします。
アクションリスナーの 'w1'は決してインスタンス化されません。あなたは可変スコープについて混乱しているようです。あなたはローカル変数と同じ名前のクラスメンバーを持っています(main()のw1はあなたのクラスのw1と同じ参照ではありません)アクションリスナーの 'run'参照と同じです。あなたのコンストラクタ)。 – Cypher
どのように私はそれを見て、私はまだ見つけることができません。 – Jbot
http://www.java-made-easy.com/variable-scope.html – Cypher