Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类之间的ActionListener?_Java_Swing_Jdbc_Jbutton_Actionlistener - Fatal编程技术网

Java 类之间的ActionListener?

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

我得到了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=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