我遇到的任务有一个问题:我需要编写一个带有计时器组件的游戏,但我得到一个"线程中的异常" Timer-0"显示java.lang.NullPointerException"错误。我正在使用最新版本的eclipse。帮助将不胜感激。
实际错误:
线程中的异常" Timer-0"显示java.lang.NullPointerException 在GameFrame $ MyTimerTask.run(GameFrame.java:152) at java.util.TimerThread.mainLoop(Unknown Source) 在java.util.TimerThread.run(未知来源)
class VoteAddSerializer(serializers.ModelSerializer):
class Meta:
model = Vote
exclude =('id','created_date','user',)
def validate(self, data):
request = self.context.get('request')
vote_date = request.user.profile.vote_date
if vote_date + timedelta(days=1) > timezone.now():
raise serializers.ValidationError("You need wait to vote again")
return data
答案 0 :(得分:1)
此行导致MyTimerTask实例执行时延迟为0(无延迟)。
timer.schedule(new MyTimerTask(), 0,1000);
MyTimerTask访问字段timer_field
,该字段在schedule语句之后初始化。
timer_field = new JTextField();
所以timer_field
仍为null
。
解决方案:
// timer.schedule(new MyTimerTask(), 0,1000);
timer_field = new JTextField();
timer_field.setText(hours + ":" + minutes + ":" + seconds);
timer_field.setFont(new Font("random",0,50));
timer_field.setHorizontalAlignment(JTextField.CENTER);
timer_field.setBackground(Color.white);
timer_field.setForeground(Color.green);
timer.schedule(new MyTimerTask(), 0,1000);
因此,计划调用应该稍晚。
答案 1 :(得分:0)
你的内部类MyTimerTask在初始化之前使用timer_field。 你可以移动这些行:
timer = new Timer();
timer.schedule(new MyTimerTask(), 0,1000);
到构造函数的末尾,以便在它之后初始化timer_field:
timer_field = new JTextField();