Java 类之间的ActionListener?
我得到了promt.java和gui.java文件。一旦我点击promt上的OK按钮,它就会消失并运行db查询。我想在gui.java上获取JTextField的查询结果,尝试从promt.java获取SetText和append,但没有成功。它将查询结果获取到promt中的一个变量,但不在gui中获取它 Promt Actionlistener for OK按钮Java 类之间的ActionListener?,java,swing,jdbc,jbutton,actionlistener,Java,Swing,Jdbc,Jbutton,Actionlistener,我得到了promt.java和gui.java文件。一旦我点击promt上的OK按钮,它就会消失并运行db查询。我想在gui.java上获取JTextField的查询结果,尝试从promt.java获取SetText和append,但没有成功。它将查询结果获取到promt中的一个变量,但不在gui中获取它 Promt Actionlistener for OK按钮 try{ Class.forName(jdbc_driver); con=Drive
try{
Class.forName(jdbc_driver);
con=DriverManager.getConnection(db_url, "root", "");
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next());{
i = 1;
id=rs.getString("id")+"";
ovog=rs.getString("ovog")+"";
ner=rs.getString("ner")+"";
cardnum1=rs.getString("card_number")+"";
val=rs.getString("dvn")+"";
GUI guu=new GUI();
guu.screen3.setText("id: "+id +" "+"ovog"+ovog+" "+"ner"+ner+" "+"card number"+cardnum1+" "+"dun"+val);
}}
catch(Exception e){
System.out.println("Not Found!");
e.printStackTrace();
}
GUI Actionlistener
public void actionPerformed(ActionEvent e) {
if(e.getSource()==card){
Cardpromt cp=new Cardpromt();
cp.prompt();
}
在
Propmpt
调用中创建新的GUI不会对您有任何帮助,因为您正在创建GUI类的新引用,而不是当前正在运行的引用
但是,您可以做的是在创建当前GUI时将其引用传递到提示符
。更好的情况是使用带有方法的接口来设置文本,GUI
可以实现它。差不多
public interface GuiService {
public void setScreenText(String text);
}
public class GUI implments GuiService {
private JLabel screen;
@Override
public void setScreeenText(String text) {
screen.setText(text);
}
...
public void actionPerformed(ActionEvent e) {
CardPrompt promt = new CardPrompt(GUI.this);
prompt.prompt();
}
}
public class CardPropmt {
private GuiService guiService;
public CardPrompt(GuiService guiService){
this.guiService = guiService;
}
...
try {
...
guiService.setScreenText("id: "+id +" "+"ovog"+ovog+" "+"ner"+ner+" "+"card number"+cardnum1+" "+"dun"+val);
}
}
这样,您就可以引用当前的GUI类,并通过服务方法访问其方法setScreenText