我有promt.java和gui.java文件。一旦我点击promt上的OK按钮它就会消失并运行db query。我想在gui.java上的JTextField上获取查询结果,尝试使用SetText并从promt.java追加但是没有用。它将查询结果发送到promt中的变量但没有在gui中获取它。
用于OK按钮的Promt Actionlistener
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();
}
答案 0 :(得分:0)
在Propmpt
调用中创建一个新的GUI不会为您做任何事情,因为您正在创建GUI类的新引用,而不是当前正在运行的GUI类。
可以做的事情是在创建时将当前GUI的引用传递给Prompt
。更好的情况是使用带有方法的接口来设置文本,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
。