java swing实现迅雷登录成功后刷新主界面,并传递参数给主界面功能
迅雷实现的功能如下图所示
同一个界面,只是相当于对其进行了刷新。
开始做这个的时候实在找不到办法,开始还想着把登录类代码放到主界面中,互相之间能够调用,但我不想那样。于是就陷入了困难之中,不知道如何得出登陆成功这个标志,因此也就是没办法关闭主界面,在登录类不可能关闭主界面,并且也不能把参数传递到主界面。思考了很久很久,最后在自学完线程后,发现可以登陆成功后先关闭当前登陆页面,在获取当前线程后,关闭他,在对主界面实例化就可以解决这个问题了。
要想实现这个功能就要采用多线程
主界面中调用登陆界面具体实现在下面
实现如下
主界面按钮监听代码
button.addActionListener(e->{
if(mainface.username==null)//判断是否登陆过,没登陆过就说明参数没有被复制
{
new loginface();//登陆界面的类实例化
}
else
JOptionPane.showMessageDialog(null, "你已经登陆过");
});
登陆界面中登陆按钮监听
but1.addActionListener(e->{
String accountT = text1.getText().trim();
String namesT = new String(text2.getPassword()).trim();
try {
connection(); //加载数据库连接类,连接数据库;
boolean com = compareWithSql(accountT,namesT,accountT);//函数为查询表,参数依次为账号,密码,手机号
if(com==true)
{
JOptionPane.showMessageDialog(null, "登录成功");
f.dispose();//关闭当前frame
Thread thread=Thread.currentThread();//获取当前线程,也就是主界面线程
thread.stop();//关闭线程
mainface mf=new mainface();//重新加载主界面,开启新线程
mf.username=accountT;//传递参数
}
}
catch (Exception e1) {
e1.printStackTrace();
}
});