java table的问题?为什么table的mouseclicked事件只能反应一次就没有反应了?程序是一个万年历的程序,当年份或月份改变了就,再从table上面选择日期,再把日期写在一个TestField的文本中,现在问题是程序开始运行的时候(没有改变当前的年和月),可以多次选择日期,TestField的文本可以根据鼠标点击而改变,但是一旦选择另一个年份,鼠标选择就失效了???????
table的监听事件:(部分程序)table.addMouseListener(new MouseListener(){ //添加事件
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
int row = table.getSelectedRow();
int col= table.getSelectedColumn();
dayft.setText(table.getValueAt(row,col).toString());}
});combYear.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
String y=(String)combYear.getSelectedItem();
year=Integer.parseInt(y); //年份改变触发事件
getTable(year,month);
//table.addMouseListener(new MouseListener());
}
});
combMonth.addItemListener(new ItemListener(){ //添加事件
public void itemStateChanged(ItemEvent e) {
String m=(String)combMonth.getSelectedItem();
month=Integer.parseInt(m)-1;
getTable(year,month); //月份改变所触发的事件}
});
combYearl.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
String y=(String)combYearl.getSelectedItem();
year=Integer.parseInt(y);
getTable(year,month);
//table.addMouseListener(new MouseListener());
}
});
combMonthl.addItemListener(new ItemListener(){ //添加事件
public void itemStateChanged(ItemEvent e) {
String m=(String)combMonthl.getSelectedItem();
month=Integer.parseInt(m)-1;
getTable(year,month); }
});
void getTable(int year,int month)
{
//判断是否闰年
if(gcal.isLeapYear(year)) mon[2]=29;cal.set(year,month,1);
int week=cal.get(Calendar.DAY_OF_WEEK)-1;
String a[]=new String[37];
String f[]=new String[38];
for(int i=0;i<a.length;i++)
a[i]=" ";
for(int i=week,n=1;i<week+mon[month+1];i++)
{
if(n<=9)
a[i]=" "+ n;
else
a[i]=String.valueOf(n);//星期的对应 空格
n++;
}
for(int i=0,j=0,k=0;i<a.length;i++ )
{
value[j][k]=a[i];
k++;
if(k%7==0)
{
j=j+1;
k=k%7;
}
} table=new JTable(value,title);
JTableHeader head=table.getTableHeader();
p1.add(head,BorderLayout.NORTH);
p1.add(table,BorderLayout.CENTER);
c.add(p1);
validate(); }
第一次发帖子,没分可以给,希望哪位大虾可以帮帮忙~~感激不尽!~~~
table的监听事件:(部分程序)table.addMouseListener(new MouseListener(){ //添加事件
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
int row = table.getSelectedRow();
int col= table.getSelectedColumn();
dayft.setText(table.getValueAt(row,col).toString());}
});combYear.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
String y=(String)combYear.getSelectedItem();
year=Integer.parseInt(y); //年份改变触发事件
getTable(year,month);
//table.addMouseListener(new MouseListener());
}
});
combMonth.addItemListener(new ItemListener(){ //添加事件
public void itemStateChanged(ItemEvent e) {
String m=(String)combMonth.getSelectedItem();
month=Integer.parseInt(m)-1;
getTable(year,month); //月份改变所触发的事件}
});
combYearl.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
String y=(String)combYearl.getSelectedItem();
year=Integer.parseInt(y);
getTable(year,month);
//table.addMouseListener(new MouseListener());
}
});
combMonthl.addItemListener(new ItemListener(){ //添加事件
public void itemStateChanged(ItemEvent e) {
String m=(String)combMonthl.getSelectedItem();
month=Integer.parseInt(m)-1;
getTable(year,month); }
});
void getTable(int year,int month)
{
//判断是否闰年
if(gcal.isLeapYear(year)) mon[2]=29;cal.set(year,month,1);
int week=cal.get(Calendar.DAY_OF_WEEK)-1;
String a[]=new String[37];
String f[]=new String[38];
for(int i=0;i<a.length;i++)
a[i]=" ";
for(int i=week,n=1;i<week+mon[month+1];i++)
{
if(n<=9)
a[i]=" "+ n;
else
a[i]=String.valueOf(n);//星期的对应 空格
n++;
}
for(int i=0,j=0,k=0;i<a.length;i++ )
{
value[j][k]=a[i];
k++;
if(k%7==0)
{
j=j+1;
k=k%7;
}
} table=new JTable(value,title);
JTableHeader head=table.getTableHeader();
p1.add(head,BorderLayout.NORTH);
p1.add(table,BorderLayout.CENTER);
c.add(p1);
validate(); }
第一次发帖子,没分可以给,希望哪位大虾可以帮帮忙~~感激不尽!~~~
楼主【waitingfree】截止到2008-07-23 15:50:49的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:0 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html