按照你的代码,最简单但笨拙的解决方案如下:
//method reco
JPasswordFieldDemo JP=new JPasswordFieldDemo();
String reader_id = null;
do{
reader_id=JP.reader_id;
int n1=0;
//后续登陆check逻辑
}while(reader_id!=null);
最好的做法是给登陆窗口中的登陆按钮触发事件时调用后续的登陆查询逻辑
//method reco
//1.实例化登陆窗口对象
JPasswordFieldDemo JP=new JPasswordFieldDemo();//构造是不要立即显示窗体
//2.注册事件
JButton loginBtn=JP.getLoginButton();//简单封装下,当然可以粗糙些,类似 JP.reader_id
//注册一个listener
loginBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//后续登陆check逻辑
}
});
//3.显示登陆窗口
JP.setVisible(true);
看了下,你说好像去登陆框里的值有问题,取不到,可以这样封装个方法在类JPasswordFieldDemo
//类JPasswordFieldDemo中定义一个方法
public String getLoginName(){
//用户名控件 nameTextField
return nameTextFiled.getText();
}
//密码控件也可以类似
然后在当前类中recommend中
String reader_id=JP.reader_id 改成
String reader_id=JP.getLoginName();
类似这种
在调用另一个类的方法下面接着写本类需要执行的方法。
1、定义2个类
public class A{//调用类
}
public class B{//被调用类
public void show(){//B类中的方法
}
}
2、A类调用B类
public class A{//调用类
public void show(){
B b = new B();
b.show();//调用B类方法
...//接着执行A类方法
}
}
你希望是同步(阻塞)的,但实际上是异步调用的。
如果只是想控制流程,可以这么写:
String reader_id = null;
while(true){
reader_id = JP.reader_id;
if(reader_id != null){
break;
}
}
system.out.println(reader_id);
这里你已经做到了类的调用,A类调用B类的对象JP的时候是已经执行完操作才继续下一步的。你需要检查你B类中有没有正确的取值和赋值,先用System.out.println(reader_id);在B类取用户名值的部分进行测试,如果输出是正确的,就是B到A的参数传递出错了;如果同样没有输出,那么就是你的取值赋值部分的代码没有写对。
我想说你的逻辑有点反了,为什么不让B类去调用A类中的方法,在B类方法中用A的方法把列先查询出来之后,然后登陆时输入就可以获得用户名和密码,然后再进行比较!望采纳!