2016-04-29 6 views
-1

私はJTextFieldで彼/彼女の名前 を入力するようユーザーに求めます簡単な子供のゲームを作っていますし、私は新しいオブジェクトを作り、メソッドを呼び出すためにそれを使用してゲーム
を終了した後に、その名前が他のクラスに示しますgetNameが、私が返すメソッドを呼び出すときnull
私はそれがユーザーが入力した名前を返すようにしたい
任意の提案をしてください?JTextFieldから文字列を取得し、それを変数に保存する方法は?

これはコードです:

package learn_englishTest; 
 

 
import java.awt.BorderLayout; 
 
import java.awt.Color; 
 
import java.awt.Container; 
 
import java.awt.Dimension; 
 
import java.awt.Font; 
 
import java.awt.event.ActionEvent; 
 
import java.awt.event.ActionListener; 
 
import javax.swing.JLabel; 
 
import javax.swing.JButton; 
 
import javax.swing.JTextArea; 
 
import javax.swing.JTextField; 
 
import javax.swing.JFrame; 
 
import javax.swing.JPanel; 
 
import javax.swing.Icon; 
 
import javax.swing.ImageIcon; 
 

 

 

 

 

 
public class Home extends JFrame{ 
 
    
 
    
 
    JTextArea welcome_txt,userName_txt; 
 
    JTextField user_name; 
 
    JLabel Background_lbl; 
 
    JButton exit_btn,start_btn; 
 
    JPanel panel; 
 
    Icon Background_icon; 
 
    String name; 
 
    Font userName_font,welcome_font; 
 
    
 
    
 
    
 
     
 
     
 
    public Home(){ 
 
     
 
     super("Easy Fun Learning"); 
 
     Container c =getContentPane(); 
 

 
\t \t c.setLayout(new BorderLayout()); 
 
       
 
       
 
       
 
       
 
     
 
     panel =new JPanel(null); 
 
     panel.setPreferredSize(new Dimension(650,470)); 
 
     
 
     welcome_txt=new JTextArea("Welcom to Easy Fun Learning "); 
 
     welcome_txt.setEditable(false); 
 
     
 
     welcome_font = new Font("Verdana", Font.BOLD, 30); 
 
     welcome_txt.setFont(welcome_font); 
 
     welcome_txt.setForeground(Color.pink); 
 
     welcome_txt.setBounds(80, 60, 500, 50); 
 
      
 
     
 
     
 
      
 
      
 
     userName_font=new Font("Verdana",Font.BOLD,20); 
 
     userName_txt=new JTextArea("Enter Your Name"); 
 
     userName_txt.setEditable(false); 
 
     userName_txt.setFont(userName_font); 
 
     userName_txt.setForeground(Color.BLUE); 
 
     userName_txt.setBounds(350, 200, 200, 40); 
 
     
 
     user_name=new JTextField(10); 
 
     user_name.setBounds(400, 240, 100, 30); 
 
    
 
     
 
     start_btn=new JButton("Start"); 
 
     start_btn.setBounds(480, 360, 100, 20); 
 
     
 
     exit_btn=new JButton("Exit"); 
 
     exit_btn.setBounds(480, 390, 100, 20); 
 
     
 
     Background_icon=new ImageIcon(getClass().getResource("art.png")); 
 
     Background_lbl=new JLabel(Background_icon); 
 
     Background_lbl.setBounds(0, 80, 450, 450); 
 
     
 
     panel.add(welcome_txt); 
 
     panel.add(userName_txt); 
 
     panel.add(user_name); 
 
     panel.add(exit_btn); 
 
     panel.add(start_btn); 
 
     panel.add(Background_lbl); 
 
     
 
     
 
     panel.setBackground(Color.WHITE); 
 

 
\t c.add(panel,BorderLayout.BEFORE_FIRST_LINE); 
 
     
 
     ButtonHandler handler=new ButtonHandler(); 
 
     
 
     exit_btn.addActionListener(handler); 
 
     start_btn.addActionListener(handler); 
 
    
 
     
 
      
 

 
     
 

 
     
 
    } 
 
    
 
    
 
     
 
     private class ButtonHandler implements ActionListener{ 
 
      
 
     
 
     @Override 
 
     public void actionPerformed(ActionEvent e) { 
 
      
 
      
 
       
 
       
 
      if(e.getSource()==exit_btn) 
 
       System.exit(0); 
 
      
 
      if(e.getSource()==start_btn){ 
 
      
 
        
 
      name=user_name.getText(); 
 
       
 
      List list=new List(); 
 
      list.setSize(700, 700); 
 
      list.setVisible(true); 
 
      list.setDefaultCloseOperation(EXIT_ON_CLOSE); 
 
      Home.this.setVisible(false); 
 
       
 
      
 
      } 
 
       
 
       
 
       
 
      
 
     } 
 
     
 
      
 
      
 
     } 
 
     
 
    
 
    @Override 
 
    public String getName(){ 
 
        
 
        return name; 
 
      }  
 

 
       
 
    
 
} 
 

+0

はいそれはうまくいきませんでした。 –

+0

'String var = textField.getText()。toString();' –

+0

'getName()'をどこで呼び出せますか? – Nfear

答えて

0

のJTextFieldから文字列を取得するには、単に以下のものが必要です

String var = jTextFieldName.getText(); 

これはである何でも保存されますJTextFieldをvar変数に追加します。

getText()は、単にJTextFieldクラスに属するメソッドであり、その中にあるテキストを返します。

+0

はい私はこれをActionListenerメソッドで記述しましたが、まだ動作していません –

1

ActionListenerを追加するのを忘れています。

user_name.addActionListener(handler); 

Java naming conventionsに従うことを強くお勧めします。

したがってuser_nameuserNameである必要があります。

JTextArea userName_txt = new JTextArea("Enter Your Name"); 
userName_txt.getDocument().addDocumentListener(new DocumentListener() { 
    @Override 
    public void removeUpdate(final DocumentEvent paramDocumentEvent) { 
     name = userName_txt.getText(); 
    } 

    @Override 
    public void insertUpdate(final DocumentEvent paramDocumentEvent) { 
     name = userName_txt.getText(); 
    } 

    @Override 
    public void changedUpdate(final DocumentEvent paramDocumentEvent) { 
     name = userName_txt.getText(); 
    } 
}); 

など何かにのgetName()を書き換えを:

+0

まだ動作していません –

0

のような何かをしようと

public String getName() { 
    return userName_txt.getText(); 
} 

しかし、あなたは基本的にはまったく意味がありません、あなたのコード内でComponent.getName()を上書きし、より良いあなたの方法の名前を変更getUsername()に渡します。

+0

どこのメソッドを記述すればよいですか? –

+0

"userName_txt = new JTextArea("あなたの名前を入力してください ")の直後にDocumentListenerを追加する;あなたは完了しました:) – huellif

+0

私を撃たない:)しかし、まだnullを返す –

関連する問題