永发信息网

用JAVA组件编制月历的问题

答案:2  悬赏:80  手机版
解决时间 2021-04-14 05:02
  • 提问者网友:聂風
  • 2021-04-14 01:49

下面是我用JAVA编制的月历,编译过了,但是执行不出组件。。

我是自学的,没地方问的。。

这里的哪位大侠帮我改一下。。。

谢谢了。。。

import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class zuo17_2 extends Frame implements ItemListener{
static int a,b=2003,c=5;
int[] B=new int[]{2003,2004,2005,2006,2007,2008,2009};
int[] C=new int[]{1,2,3,4,5,6,7,8,9,10,11,12};
Choice A1=new Choice();
Choice A2=new Choice();
Panel p1=new Panel();
Panel p2=new Panel();
Label[] l1={new Label("日"),new Label("一"),new Label("二"),new Label("三"),new Label("四"),new Label("五"),new Label("六")};
Label[] l2=new Label[35];

public zuo17_2(String title){
super(title);
for(int i=0;i<7;i++)
A1.add(B[i]+"年");
for(int i=0;i<12;i++)
A2.add(C[i]+"月");
p1.add(A1);
p1.add(A2);
p2.setLayout(new GridLayout(6,7));
for(int i=0;i<7;i++)
p2.add(l1[i]);
for(int i=0;i<35;i++)
p2.add(l2[i]);
add(p1,BorderLayout.NORTH);
add(p1,BorderLayout.CENTER);
A1.addItemListener(this);
A2.addItemListener(this);
}
public void itemStateChanged(ItemEvent e){
GregorianCalendar x=new GregorianCalendar();
if(e.getSource()==A1)
b=B[A1.getSelectedIndex()];
if(e.getSource()==A1)
c=C[A1.getSelectedIndex()];
x.set(a,b,1);
a=x.get(Calendar.DAY_OF_WEEK);
for(int i=0;c==x.get(Calendar.MONTH);i++){
if(i>c)
l2[i].setText(" ");
else{
l2[i].setText(String.valueOf(x.get(Calendar.DATE)));
x.add(Calendar.DATE,1);
}
}
}
public static void main(String []args){
zuo17_2 f=new zuo17_2("月历");
f.pack();
f.setVisible(true);
}
}

最佳答案
  • 五星知识达人网友:胯下狙击手
  • 2021-04-14 01:56
p2.add(l2[i]); 这里出错; 你的12Label数组为35个。 默认初始值是null。当你添加面板组件的时候而取得的是空。所以出错了NullPointerException
全部回答
  • 1楼网友:低音帝王
  • 2021-04-14 02:44

没仔细看,但你的l2里的label对象都没有初始化呢

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯