原程序:
///j03201e4CampusCard .java
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
public class j03201e4CampusCard extends Frame implements ActionListener
{
Font MaxFont=new Font("楷体",Font.BOLD,30);
Font MinFont=new Font("楷体",Font.ITALIC,20);
Font MinFont2=new Font("宋体",Font.PLAIN,20); Frame LoginWindow=new Frame("校园卡管理系统登录窗体");
Label TitleClue=new Label("欢迎登录校园卡管理系统"); Label UserNameClue=new Label("用户名");
TextField UserNameInput=new TextField();
Label UserPWClue=new Label("密 码");
TextField UserPWInput=new TextField();
Button OK=new Button("登录");
Button Cancel=new Button("取消");
Connection con;
Statement str;
String UserName;
String LoginName;
    String PassWord;
    int balance; j03201e4CampusCard()
{
    LoginWindow.setLayout(null);
    LoginWindow.setBackground(Color.orange);     TitleClue.setForeground(Color.red);
    TitleClue.setFont(MaxFont);
    TitleClue.setBounds(50,50,350,100);        UserNameClue.setBounds(100,140,100,50);
        UserNameClue.setFont(MinFont);
        UserNameInput.setBounds(200,150,100,30);
        UserPWClue.setBounds(100,200,100,50);
        UserPWClue.setFont(MinFont);
        UserPWInput.setBounds(200,210,100,30);
        UserPWInput.setEchoChar('*');
    OK.setBounds(110,290,50,30);
    OK.setFont(MinFont2);
    Cancel.setBounds(260,290,50,30);
    Cancel.setFont(MinFont2);
    OK.setBackground(Color.gray);
    Cancel.setBackground(Color.gray);
    OK.addActionListener(this);     LoginWindow.add(TitleClue);
    LoginWindow.add(UserNameClue);
    LoginWindow.add(UserNameInput);
    LoginWindow.add(UserPWInput);
    LoginWindow.add(UserPWClue);
        LoginWindow.add(OK);
        LoginWindow.add(Cancel);     LoginWindow.setLocation(200,200);
    LoginWindow.setSize(400,400);
    LoginWindow.setResizable(false);
    LoginWindow.show();   }       public boolean IsPerformed()
   {
   try
   {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   }catch(ClassNotFoundException e)
   {
   System.out.println(e.toString());
   return false;
   }
   try
   {
   con=DriverManager.getConnection("jdbc:odbc:校园卡数据库");
   }catch(SQLException e)
   {
   System.out.println(e.toString());
   return false;
   }
   return true;
       }   public void actionPerformed(ActionEvent e)
  {
  if(e.getSource()==OK)
  {
  if(IsPerformed())
  {
   String sname=UserNameInput.getText();
   String pw=UserPWInput.getText();
   String strSQL="select* from ExampleTable where 用户名='"+sname+"'and 密码='"+pw+"'";
   try
   {
   str=con.createStatement();
   ResultSet s=str.executeQuery(strSQL);
   while(s.next())
   {
   LoginName=s.getString("用户名");
   PassWord=s.getString("密码");
   UserName=s.getString("真实姓名");
   balance=s.getInt("余额");
   JOptionPane.showMessageDialog(this,UserName+",欢迎你使用校园卡管理系统!"+balance,"登录成功!",
   JOptionPane.PLAIN_MESSAGE);
                                       Maininterface frame5=new Maininterface();//定义功能窗口
   frame5.show();//显示功能窗口
       LoginWindow.dispose();
       return;
       }
       JOptionPane.showMessageDialog(null,"登录失败,请检查用户名或者密码重试!");
       UserNameInput.setText("");
       UserPWInput.setText("");
       return;
      }catch(Exception ex)
      {
  System.out.println(ex.toString());
  return;
  }
     }
   }
   if(e.getSource()==Cancel)
   {
   System.exit(0);
   }
  }
  public static void main(String []args)
  {
  new j03201e4CampusCard();
  }
}//Maininterface.javaimport java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class Maininterface extends Frame implements ActionListener
{
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    Button btn5;
    Button btn6;
    boolean connected;
    Sufficient frame5=new Sufficient();        //定义充值窗口
    Inquire frame1=new Inquire();              //定义查询窗口
    changePassword frame2=new changePassword();//定义修改密码窗口
    Sign_up  frame3=new  Sign_up();            //定义交费窗口
    Consume frame4=new Consume();
  
Maininterface()//构造函数
{
    setLayout(new FlowLayout());
btn1=new Button("查询余额");
btn1.setBackground(Color.green);//定义按钮背景色
btn2=new Button("修改密码");
btn2.setBackground(Color.green);//定义按钮背景色
    btn3=new Button("交费");
    btn3.setBackground(Color.green);//定义按钮背景色
btn4=new Button("日常消费");
btn4.setBackground(Color.green);//定义按钮背景色
btn5=new Button("充值");
btn5.setBackground(Color.green);//定义按钮背景色
btn6=new Button("退出");
btn6.setBackground(Color.green);//定义按钮背景色
add(btn1);
add(btn2);
add(btn3);
add(btn4);
add(btn5);
add(btn6);
//System.out.println(j03201e4CampusCard.balance);
btn1.addActionListener(this);//将btn1注册给Frame5
btn2.addActionListener(this);//将btn2注册给Frame5
btn3.addActionListener(this);//将btn3注册给Frame5
btn4.addActionListener(this);//将btn4注册给Frame5
btn5.addActionListener(this);//将btn5注册给Frame5
btn6.addActionListener(this);//将btn6注册给Frame5
setSize(300,300);
}     public void actionPerformed(ActionEvent e)
{
         if(e.getSource()==btn1)
frame1.show();//显示查询余额窗口
if(e.getSource()==btn2)
  frame2.show();//显示修改密码窗口
    if(e.getSource()==btn3)
  frame3.show();//显示交费窗口
     if(e.getSource()==btn4)
  frame4.show();//显示日常消费窗口
if(e.getSource()==btn5)
    frame5.show();//显示充值窗口
if(e.getSource()==btn6)
dispose();//退出
}
}
// Inquire .java
/**
 *定义实现查询的类
 */
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 class Inquire extends Frame implements ActionListener
{    Button btn=new Button("关闭");
Inquire()//构造函数
{
setLayout(new FlowLayout());
//System.out.println(j03201e4CampusCard.balance);
btn.addActionListener(this);//将btn注册给Frame1
add(btn);
setSize(220,200);
}
public void paint(Graphics g)
{
g.drawString("您的余额为:"+j03201e4CampusCard.balance,60,100);////////////////???????
         }
            public void actionPerformed(ActionEvent e)//响应btn事件
{
dispose();
            } }//Sufficient.java
..............
.............
//changePassword.java
...................
..................
// Sign_up.java
/.......
...............
............
//Consume.java
.............
..............
以上的文件都是放在同一个文件目录下
运行的时候,当点击查询按纽时,却显示不了余额,而且显示了一堆问题。
j03201e4CampusCard.balance有问题吗??
balance不是static类型的吗?
请教高手
满分酬谢!~~~~~~~~~~~~

解决方案 »

  1.   

    好的
    贴出错误如下:
    请高手一定要帮忙啊:
    java.lang.NoSuchFieldError: balance
            at Inquire.paint(Inquire .java:15)
            at sun.awt.RepaintArea.paint(RepaintArea.java:177)
            at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
            at java.awt.Component.dispatchEventImpl(Component.java:3678)
            at java.awt.Container.dispatchEventImpl(Container.java:1627)
            at java.awt.Window.dispatchEventImpl(Window.java:1606)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:201)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:151)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    java.lang.NoSuchFieldError: balance
            at Inquire.paint(Inquire .java:15)
            at sun.awt.RepaintArea.paint(RepaintArea.java:177)
            at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
            at java.awt.Component.dispatchEventImpl(Component.java:3678)
            at java.awt.Container.dispatchEventImpl(Container.java:1627)
            at java.awt.Window.dispatchEventImpl(Window.java:1606)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:201)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:151)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
    java.lang.NoSuchFieldError: balance
            at Inquire.paint(Inquire .java:15)
            at sun.awt.RepaintArea.paint(RepaintArea.java:177)
            at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
            at java.awt.Component.dispatchEventImpl(Component.java:3678)
            at java.awt.Container.dispatchEventImpl(Container.java:1627)
            at java.awt.Window.dispatchEventImpl(Window.java:1606)
            at java.awt.Component.dispatchEvent(Component.java:3477)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:201)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:151)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
      

  2.   

    你的blance没有static修饰
    怎么能算static类型的呢
    呵呵
      

  3.   

    不好意思
    上面的程序中是有的static
    发的时候不知道为什么丢了
    呵呵
    String UserName;
    String LoginName;
        String PassWord;
           static int balance;
    加上以后还是出现上面的错误:
    这个到底是为什么啊
    难道这个问题真有这么难吗??
      

  4.   

    debug吧,肯定是某个位置使用了balance,但超过了balance的作用范围了;太长了,找着找着就乱了
      

  5.   

    你的这个问题根本与前面的JAVA文件都没有关系.除了那个static别的都是对的.编译器bug了