2014-04-16 3 views
0

나는 promt.java와 gui.java 파일을 가지고있다. 한번 promt에서 OK 버튼을 클릭하면 db 쿼리가 사라지고 실행됩니다. gui.java의 JTextField에 대한 쿼리 결과를 얻고 싶었지만 SetText를 시도하고 promt.java에서 추가했지만 작동하지 않았습니다. 그 promt 내부의 변수에 쿼리 결과를 얻지 만 GUI에서 그것을 얻지 않습니다. 새 참조를 만드는 것처럼 Propmpt 전화 INT 새로운 GUI를 만들기 OK 버튼클래스 간 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

에 대한

PROMT의 ActionListener는 당신을 위해 아무것도하지 않을 것입니다 현재 실행중인 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입니다.