我为我的班级制作了一个简单的摇摆程序,它根据 ComboBox 中的选定索引更改时区和其他一些东西。当方法 run() 如下所示时工作正常:
public void run() {
while(true){
Calendar c = Calendar.getInstance();
int h = c.get(Calendar.HOUR);
int m = c.get(Calendar.MINUTE);
int s = c.get(Calendar.SECOND);
l.setText(""+h+":"+m+":"+(s<10?"0"+s:s));
try {
t.sleep(1000);
} catch (InterruptedException ex) {}
}
}
但是,当我尝试重新定义它并使时间更改起作用时,我在这一行中得到一个空指针异常:
p.cb.addItemListener(new ItemListener() {
方法 run() 看起来像这样,它不会工作。有任何想法吗?
public void run() {
while(true){
p.cb.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
Calendar c = Calendar.getInstance();
int h = c.get(Calendar.HOUR);
int m = c.get(Calendar.MINUTE);
int s = c.get(Calendar.SECOND);
int index = p.cb.getSelectedIndex();
if(index == 0){
l.setText(""+h+":"+m+":"+(s<10?"0"+s:s));
}
else if(index == 1){
l.setText(""+(h-6)+":"+m+":"+(s<10?"0"+s:s));
}
else if(index == 2){
l.setText(""+(h-1)+":"+m+":"+(s<10?"0"+s:s));
}
else if(index == 3){
l.setText(""+(h-6)+":"+m+":"+(s<10?"0"+s:s));
}
else if(index == 4){
l.setText(""+(h+8)+":"+m+":"+(s<10?"0"+s:s));
}
}
});
try {
t.sleep(1000);
} catch (InterruptedException ex) {}
}
}
如果有人感到困惑,p 是 JFrame 类的一个实例,而 cb 是对 JFrame 类中 ComboBox 的引用。