在cominfo中定义了若干静态变量静态方法如:
package com;
public class comInfo 
{
static int deadlineTime=0;
public static void setDeadlineTime(int num)
{
deadlineTime=num;
}
public static int getDeadlineTime()
{
return deadlineTime;
}
}
}
在buyer中调用可以成功
public class buyer extends JFrame implements ActionListener
{
public buyer(int buyerport)
{
this.deadlineTime=com.comInfo.getDeadlineTime();
}

public void actionPerformed(ActionEvent e) 
{
else if(e.getSource()==timer)
{
deadlineTime--;
if(deadlineTime>=0)
{
txtDeadlineTime.setText(""+deadlineTime);
}
else
{
timer.stop();
btnbid.setEnabled(false);
}
}
          }

}
上面的操作能成功,但在另外一类df中操作却不能成功public class df extends JFrame implements ActionListener
{
    int deadlintTime;
    Timer timer;
ServerSocket serverSocket;
Socket sock;
DataOutputStream out;
DataInputStream in;
oneRequest[] rq;

public df(int deadlineTime)
{
rq=new oneRequest[10];
this.deadlintTime=deadlineTime;
}
public void service()
{
            while(true)
            {
            try 
            {
                //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
                sock=serverSocket.accept();
                executorService.execute(new Handler(sock,this));
                
            } catch (Exception e) 
            {
                e.printStackTrace();
                break;
            }
        }
    }
public void actionPerformed(ActionEvent e) 
{
else if(e.getSource()==timer)
{

if(deadlintTime>0)
{
deadlintTime=deadlintTime-1;
this.txtDeadlineTime.setText(""+deadlintTime);
com.comInfo.setDeadlineTime(deadlintTime);
}
else
{
timer.stop();
}
}
}
public static void main(String args[])
{
new df(com.comInfo.getDeadlineTime()).service();
}
}

解决方案 »

  1.   

    你如何确定这个函数一定被call了?
        public static void setDeadlineTime(int num)
        {
            deadlineTime=num;
        }
      

  2.   

    可能com.comInfo.setDeadlineTime(deadlintTime);没有被调用
    或者被调用了之后没有用com.comInfo.getDeadlineTime()再次取值public static void setDeadlineTime(int num)
    {
            deadlineTime=num;
            System.out.println(" setDeadlineTime :"+deadlineTime);
    }
    public static int getDeadlineTime()
    {
            return deadlineTime;
            System.out.println(" getDeadlineTime :"+deadlineTime);
    }
      

  3.   

    可以,因为我CALL之后,在buyer中调用得到的是最新的值,但在df中调用就不行
      

  4.   

    if(deadlintTime>0)
                {
                    deadlintTime=deadlintTime-1;
                    this.txtDeadlineTime.setText(""+deadlintTime);
                    com.comInfo.setDeadlineTime(deadlintTime);
                }我从你的代码里找不到 deadlintTime会有大于0的情况
      

  5.   

    从你给出的df的代码中看出,一直得到0是肯定的,因为你的代码就是这样写的,如果得到的不是0,大家才会惊讶。至于你的buyer,代码不完整,不知你怎么实现的,希望具体描述一下你的成功和不成功分别是什么意思