2014-02-22 2 views
1

둘 다 두 개의 클래스가 있는데 두 클래스 모두 JFrame입니다.텍스트를 올바르게 설정할 수 없습니다.

public class B extends JFrame implements ActionListener 
{ 
    String a, b; 
    JButton ok; 
    JTextField jtext1, jtext2; //where the user will input names 

    public B() 
     { 
     jtext1 = new JTextField(10); 
     jtext2 = new JTextField(10); 
     ok = new JButton("OK"); 
     ok.addActionListener(this); 

     add(jtext1); 
     add(jtext2); 
     add(ok); 
     } 

     public void actionPerformed (ActionEvent e) 
     { 
      if (e.getSource() == ok) 
       { 
       a = jtext1.getText(); 
       b = jtext2.getText(); 

       if (!a.equals("") && !b.equals("") { 
        A x = new A(); 
        x.a1 = a; 
        x.b2 = b; 
       } 
       else 
       { 
            //some code 
       } 
      } 
     } 
    } 

내가 오류를받지 못했습니다,하지만 문제는 내가 클래스 Bok을 클릭하면, 클래스 A가 나타납니다하고 표시하도록되어 :

public class A extends JFrame { 

     JTextField pA, pB; 
     String a1, b2; 


     public A() 
     { 
      pA = new JTextField (10); 
      pA.setEditable(false); 
      pA.setText(""+a1); 
      pB = new JTextField (10); 
      pB.setText(""+b2); 
      pB.setEditable(false); 

      add(pA); add(pB); 

     } 

} 

그리고 내 다른 클래스의

텍스트 필드를 통해 사용자의 이름을 표시하지만 그렇지 않습니다.

답변

3

코드는 초보자의 잘못으로 작업하려고합니다. 객체를 두 변수에 할당 한 다음 변수 중 하나의 할당을 변경하면 두 번째 변수가 마술처럼 할당을 변경하고 ' 그런 식으로 일해라.

귀하의 B 클래스는 A의 문자열에 의해 개최 값을 변경하지만 후 A는 이미 텍스트 필드를 설정하기 위해 원래의 문자열을 사용하고있다.

해결책 : 다른 클래스가 텍스트 필드에 텍스트를 설정할 수있는 공용 설정 메소드를 제공하십시오.

public class A extends JFrame { 
    JTextField pA, pB; 
    public String a1, b2; 

    public A() { 
     pA = new JTextField (10); 
     pA.setEditable(false); 
     pA.setText(a1); 
     pB = new JTextField (10); 
     pB.setText(b2); 
     pB.setEditable(false); 

     setLayout(new FlowLayout); 

     add(pA); 
     add(pB);  
    } 

    public void setPaText(String text) { 
     pA.setText(text); 
    } 

    public void setPbText(String text) { 
     pB.setText(text); 
    } 
} 

아니면 외부 클래스 오브젝트를 생성의 필드를 설정하는 기능을 허용하는 생성자를 준다. 아니면 둘 다!

3

생성자에서 텍스트 필드를 설정하는 생성자 다음에 설정하려고합니다. 생성자에 매개 변수로 보내고 텍스트 필드를 만듭니다.

public A(String a1, String b1){ 
    pA = new JTextField (10); 
    pA.setEditable(false); 
    pA.setText(a1); 
    pB = new JTextField (10); 
    pB.setText(b2); 
    pB.setEditable(false); 

    add(pA); add(pB); 
} 
+0

그렇다면 'A x = new A (a, b)'로 'B'클래스에서 호출해야합니다. – user3026693

+0

예, 정확하게. 그런 다음 텍스트 필드를 설정합니다 –

+0

내 편집 내용을 보시겠습니까? – user3026693

관련 문제