java远程函数需要调用两次
我创建了一个java代码(swing GUI JFrame表单),当按下按钮时调用另一个类函数(在另一个项目中),但需要我单击两次按钮才能成功地从被调用的函数返回值。有什么解决办法吗 这是我的密码 GUIjava远程函数需要调用两次,java,swing,jframe,remoteobject,Java,Swing,Jframe,Remoteobject,我创建了一个java代码(swing GUI JFrame表单),当按下按钮时调用另一个类函数(在另一个项目中),但需要我单击两次按钮才能成功地从被调用的函数返回值。有什么解决办法吗 这是我的密码 GUI package aarib; import java.awt.*; import java.util.logging.Level; import java.util.logging.Logger; import AlKhalil.ui.Aarib; public class GUI ext
package aarib;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import AlKhalil.ui.Aarib;
public class GUI extends javax.swing.JFrame {
public String Input;
public String Lexems;
public Aarib A;
public GUI() {
initComponents();
A = new Aarib();
jTextField1.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
jLabel2.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if(jTextField1.getText().isEmpty())
{
jLabel2.setText("No input");
}
else{
Input = jTextField1.getText().toString();
A.inputText= Input;
try {
Lexems = A.LexicalAnalysis();
jLabel2.setText(Lexems);
} catch (Exception ex) {
jLabel2.setText("Error");
Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
还有遥控功能
package AlKhalil.ui;
import java.util.*;
import java.util.List;
import AlKhalil.token.*;
import AlKhalil.analyse.*;
import AlKhalil.*;
import AlKhalil.result.*;
public class Aarib {
public Analyzer analyzer;
public String myResult="";
public String inputText="";
public Aarib() {
Settings settings = new Settings();
analyzer = new Analyzer();
}
public String LexicalAnalysis() throws Exception {
Thread t = new Thread()
{
public void run()
{
//some code
...
...
...
}
};
t.start();
return myResult;
}
}
提前感谢:)解决方案是等待线程t中生成的结果。使用当前代码启动一个并发线程,并立即返回属性myResult。第二次单击按钮,myResult(大多数情况下)由线程填充,并在启动另一个并发线程进行计算后返回 我建议为您的程序考虑某种观察者模式。然后,您的GUI应该能够访问计算线程,并得到有关结果的通知,然后将对结果进行处理 但是,由于我们都无法看到线程中执行的代码,并且在等待线程完成时,为什么不直接使用线程呢。感谢您的帮助:)我在返回myResult之前添加了(t.isAlive()){};它成功了:)