2010-03-18 4 views
0

내 프로그램은 어떻게해야합니까? 첫 번째 프레임에는 사용자가 텍스트를 입력하는 텍스트 필드 1이 있으며 버튼을 누르면 텍스트 필드 1에서 입력 된 텍스트를 표시하는 텍스트 필드 2가있는 새 프레임이 표시됩니다. 문법을 도와주세요. 나는 여전히 자바 초보자입니다. 많은 분들께 감사드립니다.첫 번째 프레임에서 변수를 호출하는 데 어려움을 겪고 있습니다.

첫 프레임 : 지금

textfield= new JTextField(); 
textfield.setPreferredSize(new Dimension(200,30)) ; 
textfield.setSize(textfield.getPreferredSize()) ; 
textfield.setLocation(95,198) ; 
textfield.setSize(175,28); 
cont.add(textfield); 


public void actionPerformed(ActionEvent e) { 



     this.setVisible(false); 
     new Frame2().setVisible(true); //displays the 2nd frame right? 

} 

난 내 2 프레임에서 수행하거나

+1

귀하의 측면에서 약간의 코드가 도움이 될 것이다 (단지 기본 패키지에 FrameTest.java라는 이름의 새 파일에 복사). 내 상상력은 제한적이다. –

+1

JFrame 튜토리얼을 확인해야한다고 생각합니다.이게 가장 먼저 배울 것입니다. – RubyDubee

답변

1

당신이 전달할 수 있습니다 내가 첫 번째 프레임에서 변수를 얻을 수 없기 때문에 어디서부터 시작 해야할지 모르겠어 Frame2의 생성자에서 원하는 변수 :

Frame2 frame2 = new Frame2(textfield.getText()); 
frame2.setVisible(true); 
+0

예. 그러면 두 번째 프레임을 만들어야합니다. Bozho에게 감사드립니다. – RubyDubee

+0

어떻게받을 수 있습니까? 나는 그것을 얻을 수 없기 때문에. 그것은 하나의 클래스와 메인 프레임에 하위 클래스가 없기 때문입니까? – LockOn

+0

나는 그것을 어떻게하는지 당신에게 말했다. 그런 다음 생성자의 인수로 사용하게됩니다. 그래서 당신은 그것을 가지고 있습니다. 생성자가 어떻게 보이는지에 대한 Webbissh 답변을 참조하십시오. (나는 당신이 Frame2라는'Frame'의 하위 클래스를 가지고 있다고 가정했다.) – Bozho

1

당신이해야 할 모든 - 텍스트 필드 2와 두 번째 프레임에 대한 새로운 생성자를 정의

public Frame2(String toDisplay){ 
    textfield2 = new JTextField(toDisplay); 
} 
0

이 시도 :

import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class FrameTest extends JFrame { 

    public static void main(String[] args) { 
    JFrame frame = new FrameTest(); 
    frame.pack(); 
    frame.setVisible(true); 
    } 

    public FrameTest() { 
    JPanel panel = new JPanel(); 

    final JTextField textField = new JTextField(); 
    textField.setPreferredSize(new Dimension(100, 20)); 
    panel.add(textField); 

    JButton button = new JButton("press me"); 
    panel.add(button); 

    setContentPane(panel); 

    button.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
     FrameTest.this.setVisible(false); 
     Frame2 secondFrame = new Frame2(textField.getText()); 
     secondFrame.pack(); 
     secondFrame.setVisible(true); 
     } 

    }); 
    } 

    class Frame2 extends JFrame { 

    public Frame2(String text) { 
     getContentPane().add(new JTextField(text)); 
    } 

    } 

} 
+0

다시 한번 똑같은 것을 써 주셔서 감사합니다 :) – RubyDubee

+0

전체 작업 예제를 복사하여 붙여 넣는 것이 항상 쉽습니다 :-) 또한 그는 텍스트 필드를 '통과'하는 문제에 대해 이야기하고있었습니다. 아마도 최종 (또는 필드)이 아닌 텍스트 필드가 문제 였을 것입니다. 그래서 나는 그가 이전의 두 가지 답을 결합함으로써 자신의 문제를 해결했다고 확신하지 못했습니다. – Fortega