xzxmustwin 2016-12-31 12:01 采纳率: 50%
浏览 4631
已结题

java如何调用其他类中的变量

初学者,最近在学着用窗体做一个个人记账本。其中我已经写好了load部分和register部分,连上数据库也都可以实现。然后在编写Accountbook这个类的时候我要知道我现在是哪个用户在登录并查询这个用户的记录。但是这个用户变量在load类中。怎么调用?
以下为部分源码:
load类:
import java.awt.*;

import javax.swing.*;

import java.sql.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Login extends JFrame implements ActionListener {
Connection conn;
Statement stat;
PreparedStatement ps;
ResultSet rs;
JButton load,reg;
JLabel userJLabel,passJLabel;
JPanel userJPanel, passJPanel,loadJPanel;
JTextField userJtf;
JPasswordField passJtf;
String user,pwd;

public static void main(String[] args) {
    Login login = new Login();
}

public Login(){
    super("登录");
    this.setSize(400,300);
    this.setLocation(300,200);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLayout(new GridLayout(4, 0));

    userJLabel = new JLabel("用户名:");
    userJtf = new JTextField(10);
    userJPanel = new JPanel();
    userJPanel.add(userJLabel);
    userJPanel.add(userJtf);
    this.getContentPane().add(userJPanel);

    passJLabel = new JLabel("密 码:");
    passJtf = new JPasswordField(10);
    passJPanel = new JPanel();
    passJPanel.add(passJLabel);
    passJPanel.add(passJtf);
    this.getContentPane().add(passJPanel);

    loadJPanel = new JPanel();
    load = new JButton("登录");
    load.addActionListener(this);
    loadJPanel.add(load);
    reg = new JButton("注册");
    reg.addActionListener(this);
    loadJPanel.add(reg);
    this.getContentPane().add(loadJPanel);

    this.setVisible(true);
    this.connection();
}

public void connection(){
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/db_user";
        conn = DriverManager.getConnection(url,"root","root");
        stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this,"连接数据库错误!","错误对话框",JOptionPane.ERROR_MESSAGE);
    }
}

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == load){
    try {
        ps=conn.prepareStatement("select * from tb_user where user=? and pwd=? ");
        ps.setString(1, userJtf.getText());
        ps.setString(2, new String(passJtf.getPassword()));

        rs = ps.executeQuery();

        if(rs.next())
        {
            user = rs.getString(1);
            pwd = rs.getString(2);
            JOptionPane.showMessageDialog(null, "登录成功!!!", "提示消息", JOptionPane.WARNING_MESSAGE);
            System.out.println("成功获取到密码和用户名from数据库");
            System.out.println(user + "\t" + pwd + "\t");
        }else
        {
            JOptionPane.showMessageDialog(null, "用户名或者密码错误,请重新输入!", "提示消息", JOptionPane.ERROR_MESSAGE);

        }           
    } catch (Exception ex) {}
    }
    if(e.getSource() == reg){
        Register register = new Register();
    }
}
}
Accountbook类中:
rs=stat.executeQuery("select * from tb_accountbook where user = '"+user+"'");
这个user怎么获取
  • 写回答

4条回答 默认 最新

  • ljheee 2017-01-01 03:22
    关注

    传递参数——构造Accountbook这个类的时候,加上参数。
    或者直接把load类中user当前用户,写成public static,然后在Accountbook这个类需要的时候,通过load.user获得。

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题