2014-04-19 23 views
0

자바에서 텍스트 필드를 사용하는 방법에 대한 기본적인 질문이 있습니다. 그것은 매우 간단하지만 내가 찾고 있었던 튜토리얼과 다른 질문은 도움이되지 않았으며, 누군가가 나를 위해 좀 더 명확하게 설명 할 수 있기를 바라고 있습니다.자바에서 텍스트 필드를 사용하는 방법

는 지금은 그냥 종류의 예를 위해 함께 때렸다 다음과 같은 코드가 있습니다, 인쇄가

import javax.swing*; 
public class testText { 
    public static void main(String[] args){ 

     JFrame frame = new JFrame(); 
     JTextField text = new JTextField(); 
     frame.add(text); 
     frame.setVisible(true); 
     System.out.println(text.getText()); 
    } 
} 

내가 할 노력하고있어 모든입니다 무엇을 텍스트 필드에 사용자 유형에 콘솔. 그러나 텍스트 필드에 입력 할 때 아무런 반응이 없습니다.

지금까지 수행 한 연구에 따르면, 문제는 내가 actionListener를 사용하지 않는다고 생각합니다. 문제는, 그 일이 어떻게 이루어지는 지 정말로 이해할 수 없으며, 누군가가 나를 위해 명확히 할 수 있기를 바라고 있습니다.

저는 this tutorial을 사용해 보았습니다. 특히 위에있는 TextDemo 예제를 사용해 보았습니다. 나는 여전히 일종의 상실감이 있지만, 프로그램을 중단하지 않고 actionlistener 인터페이스를 사용할 방법을 찾지 못하는 것 같습니다. 누군가가 단순히 텍스트 필드에서 문자열을 가져 와서 사용하거나 또는 다른 곳으로 안내 할 수있는 actionlistener를 사용하는 방법을 간단하고 직접 설명 할 수 있다면 간단하고 간단한 설명을 찾을 수 있습니다. 나는 지금까지 5 시간 동안 내 머리를 때리고 있었는데, 그걸 보여줄 것이 전혀 없으므로, 나는 그런 기본적인 질문을하는 것에 대해 사과하지만, 나는 실망했다.

답변

1

필드에 입력하는 동안 키를 입력하면 작업 수신기가 호출됩니다. JTextField의의 자바 독에서 :

텍스트 필드가 VK_ENTER 이벤트를 소비하는 방법 텍스트 필드가 어떤 액션 청취자가 있는지 여부에 따라 달라집니다. 그렇다면 VK_ENTER는 의 청취자가 ActionEvent를 가져오고 VK_ENTER 이벤트가 이됩니다.

는 여기에 액션 청취자와 함께 작동하도록 수정 귀하의 예는 다음과 같습니다

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

import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class testText { 
    public static void main(String[] args){ 

     JFrame frame = new JFrame(); 
     final JTextField text = new JTextField(); 
     frame.add(text); 
     frame.setVisible(true); 

     text.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       System.out.println(text.getText()); 
      } 
     }); 
    } 
} 

그리고 여기에 정적의 주요 방법에만 의존하지 complete example을 객체 지향이다.

+0

좋아, 나에게 의미가있다. 추가 질문을하겠습니다. 사용자로부터 입력을받을 때까지 프로그램을 중지하는 방법은 무엇입니까? 실제로 작업하고있는 실제 프로그램은 사용자가 이름을 입력하게하고 이름이 창에있는 JLabel elsewehre에 인쇄됩니다. 하지만 어떻게 프로그램을 멈추고 입력을 기다릴 수 있는지 알 수는 없습니다. 여러 스레드로 분할하고 wait() 함수를 사용해야합니까? 그것은 단순한 동작처럼 보이기 때문에 이상하게 복잡해 보이지만 while 루프를 사용하면 프로그램을 중단시키는 것처럼 보입니다. – GoMeteoroGo

+0

'JTextField'로했던 것처럼'JLabel' 만 만들어야합니다. 그런 다음'text'의'actionPerformed'에'label.setText (text.getText())'를 추가합니다. – slaadvak

관련 문제