2024-03-26 11:34:09 | 我爱编程网
可以用join()方法,楼主试试下面的例子,看看是不是你想要的:
public static class T extends Thread{
private final String name;
public T(String name){
this.name = name;
}
@Override
public void run() {
super.run();
for(int i=0; i<1000; i++)
System.err.println(name + "\t" + i);
}
}
public static void main(String[] args) throws Exception{
T t = new T("t1");
T t2 = new T("t2");
t.start();
t.join();
t2.start();
}
package thread;
public class TestJoin {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreJo t= new ThreJo("a");
t.start();
ThreJo t2= new ThreJo("b");
t2.start();
try {
t.join();
t2.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("出错了");
return ;
}
for(int i =0;i<50;i++){
System.out.println("调用主线程第"+i+"次");
}
}
class ThreJo extends Thread{
ThreJo(String s){
super(s);
}
public void run(){
for(int i =0;i<50;i++){
System.out.println("继承Thread"+i+"次,我是"+getName());
}
}
}
我爱编程网(https://www.52biancheng.com)小编还为大家带来java 一个类调用另一个类的方法 怎样控制另一个类的方法执行完再继续执行本类的相关内容。
按照你的代码,最简单但笨拙的解决方案如下:
//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();
类似这种
2023-12-21 16:29:16
2023-12-24 20:21:11
2024-04-13 17:18:48
2024-04-09 17:44:01
2024-04-04 05:10:44
2024-03-31 15:14:06