您的位置:程序门 -> java -> j2se / 基础类



jtable  问题 不解??????    急  !!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


jtable 问题 不解?????? 急 !!
发表于:2007-09-26 12:58:45 楼主
我是用   jtable     写的这个万年历,但运行后,点击jtable中的单元格时,表中   显示的值全都不显示了,这是怎么回事??谢谢!!!!

以下是我的两个文件源码:
(1)calendartest.java   :

package   forum;

import   javax.swing.swingutilities;
import   java.awt.borderlayout;
import   javax.swing.jpanel;
import   javax.swing.jframe;
import   java.awt.gridbaglayout;
import   javax.swing.jlist;
import   java.awt.gridbagconstraints;
import   java.awt.flowlayout;
import   javax.swing.jcombobox;
import   javax.swing.jlabel;
import   javax.swing.jtextfield;
import   java.awt.gridlayout;
import   java.awt.dimension;
import   java.util.calendar;

import   javax.swing.swingconstants;
import   javax.swing.jtable;
import   javax.swing.jscrollpane;

/**
  *  
  *     日期:2007-9-24   文件名:calendartest.java   版本:0.1
  */
public   class   calendartest   extends   jframe   {

private   static   final   long   serialversionuid   =   1l;

private   jpanel   jcontentpane   =   null;

private   jpanel   datechooserpanel   =   null;

private   jpanel   datedisplaypanel   =   null;

private   jcombobox   monthcombox   =   null;

private   jcombobox   yearcombox   =   null;

private   jlabel   currentlabel   =   null;

private   jtextfield   currentfield   =   null;

private   jpanel   datepanel   =   null;

private   jscrollpane   jscrollpane   =   null;

private   jtable   datetable   =   null;

/**
  *   this   method   initializes   datechooserpanel
  *  
  *   @return   javax.swing.jpanel
  */
private   jpanel   getdatechooserpanel()   {
if   (datechooserpanel   ==   null)   {
currentlabel   =   new   jlabel();
currentlabel.settext( "当前选择日期: ");
datechooserpanel   =   new   jpanel();
datechooserpanel.setlayout(new   flowlayout());
datechooserpanel.add(getyearcombox(),   null);
datechooserpanel.add(getmonthcombox(),   null);
datechooserpanel.add(currentlabel,   null);
datechooserpanel.add(getcurrentfield(),   null);
}
return   datechooserpanel;
}

/**
  *   this   method   initializes   datedisplaypanel
  *  
  *   @return   javax.swing.jpanel
  */
private   jpanel   getdatedisplaypanel()   {
if   (datedisplaypanel   ==   null)   {
datedisplaypanel   =   new   jpanel();
datedisplaypanel.setlayout(new   borderlayout());
datedisplaypanel.add(getdatepanel(),   borderlayout.center);
}
return   datedisplaypanel;
}

/**
  *   this   method   initializes   monthcombox
  *  
  *   @return   javax.swing.jcombobox
  */
private   jcombobox   getmonthcombox()   {
if   (monthcombox   ==   null)   {
monthcombox   =   new   jcombobox();
for   (int   i   =   1;   i   <   13;   i++)   {
monthcombox.additem(i);
}

}
return   monthcombox;
}

/**
  *   this   method   initializes   yearcombox
  *  
  *   @return   javax.swing.jcombobox
  */
private   jcombobox   getyearcombox()   {
if   (yearcombox   ==   null)   {
yearcombox   =   new   jcombobox();
yearcombox.additemlistener(new   java.awt.event.itemlistener()   {
public   void   itemstatechanged(java.awt.event.itemevent   e)   {

}
});
for   (int   i   =   1990;   i   <   2001;   i++)   {
yearcombox.additem(i);
}

}
return   yearcombox;
}

/**
  *   this   method   initializes   currentfield
  *  
  *   @return   javax.swing.jtextfield
  */
private   jtextfield   getcurrentfield()   {
if   (currentfield   ==   null)   {
currentfield   =   new   jtextfield();
currentfield.seteditable(false);
currentfield.settext( "1990-01-01       一 ");
}
return   currentfield;
}

/**
  *   this   method   initializes   datepanel
  *  
  *   @return   javax.swing.jpanel
  */
private   jpanel   getdatepanel()   {
if   (datepanel   ==   null)   {
datepanel   =   new   jpanel();
datepanel.setlayout(new   borderlayout());
datepanel.add(getjscrollpane(),   borderlayout.center);

}
return   datepanel;
}


/**
  *   this   method   initializes   jscrollpane
  *  
  *   @return   javax.swing.jscrollpane
  */
private   jscrollpane   getjscrollpane()   {
if   (jscrollpane   ==   null)   {
jscrollpane   =   new   jscrollpane();
jscrollpane.setviewportview(getdatetable());
}
return   jscrollpane;
}

/**
  *   this   method   initializes   datetable
  *  
  *   @return   javax.swing.jtable
  */
private   jtable   getdatetable()   {
if   (datetable   ==   null)   {
datetable   =   new   jtable();
int   year   =   2007;
int   month   =   9;
datetable.setmodel(new   datetablemodel(year,month));
}
return   datetable;
}

/**
  *   功能:万年历主函数
  */
public   static   void   main(string[]   args)   {

swingutilities.invokelater(new   runnable()   {
public   void   run()   {
calendartest   thisclass   =   new   calendartest();
thisclass.setdefaultcloseoperation(jframe.exit_on_close);
thisclass.setvisible(true);

}
});
}

/**
  *   this   is   the   default   constructor
  */
public   calendartest()   {
super();
initialize();
}

/**
  *   this   method   initializes   this
  *  
  *   @return   void
  */
private   void   initialize()   {
this.setsize(348,   229);
this.setcontentpane(getjcontentpane());
this.settitle( "自制万年历 ");
// setdatedisplay(2007,   9);
}

/**
  *   this   method   initializes   jcontentpane
  *  
  *   @return   javax.swing.jpanel
  */
private   jpanel   getjcontentpane()   {
if   (jcontentpane   ==   null)   {
jcontentpane   =   new   jpanel();
jcontentpane.setlayout(new   borderlayout());
jcontentpane.add(getdatechooserpanel(),   borderlayout.north);
jcontentpane.add(getdatedisplaypanel(),   borderlayout.center);
}
return   jcontentpane;
}

}  


(1)   datetablemodel.java   :

package   forum;

import   java.util.calendar;

import   javax.swing.table.abstracttablemodel;

public   class   datetablemodel   extends   abstracttablemodel   {

private   static   final   long   serialversionuid   =   -677920339189618690l;

int   n   =   1;

int   day   =   0;

static   int[]   daysarray   =   {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31};


static   string[]   weekarray   =   { "日 ", "一 ", "二 ", "三 ", "四 ", "五 ", "六 "};
/**
  *   选择的年份和月份所对应的天数
  */
private   int   days   =   0;

/**
  *   当前选择的年份和月份1号对应的星期
  */
private   int   week   =   0;

public   datetablemodel(int   year,   int   month)   {

days   =   getdaysofmonth(year,   month);
week   =   getdayofweek(year,   month);
system.out.println(week   +   "------- "   +   days);
}

public   int   getcolumncount()   {

return   7;
}

public   int   getrowcount()   {

return   6;
}

public   object   getvalueat(int   rowindex,   int   columnindex)   {
object   value   =   null;
if   (n   <   week   &&   n   <=   days)   {

value   =   " ";

}   else   if   (n   > =   week   &&   day   <   days)   {

value   =   daysarray[day];
day   =   day+1;
}else   if(n> days){
value   =   " ";
}
n   =   n   +   1;

return   value;
}
public     boolean   iscelleditable(int   rowindex,int   columnindex){
return     false;
}
public   string   getcolumnname(int   columnindex){
string   name   =   " ";

name   =   weekarray[columnindex];
return   name;
}

private   int   getdayofweek(int   year,   int   month)   {
int   week   =   0;

calendar   cal   =   calendar.getinstance();
cal.set(year,   month   -   1,   1);

week   =   cal.get(calendar.day_of_week);
system.out.println(week   +   "------- "   +   cal.get(calendar.year)   +   "----- "
+   cal.get(calendar.month)   +   "---- "
+   cal.get(calendar.day_of_month)   +   "--- "   +   days);
return   week;
}

/**
  *   获取当前选择年份和月份所对应的天数
  */
private   int   getdaysofmonth(int   year,   int   month)   {

int   days   =   30;
boolean   leap   =   false;

if   ((year   %   4   ==   0   &   year   %   100   !=   0)   ¦ ¦   (year   %   400   ==   0))   {
leap   =   true;
}
switch   (month)   {

case   1:
case   3:
case   5:
case   7:
case   8:
case   10:
case   12:   {
days   =   31;
break;
}

case   4:
case   6:
case   9:
case   11:   {
break;
}
case   2:   {
if   (leap)   {
days   =   29;
break;
}   else   {
days   =   28;
break;
}
}

}
return   days;
}

}
发表于:2007-09-26 19:41:101楼 得分:0
怎么每人理我啊??
发表于:2007-09-27 01:12:532楼 得分:0
你发了两次,另一个里我回答了
发表于:2007-09-28 13:54:013楼 得分:0
问题解决啦,谢谢各位。


快速检索

最新资讯
热门点击