2009-05-19 5 views
-3

皆さん、JTextField(ID、LastName、FirstName、Course、Year)の入力値をArrayListに渡す方法を教えてください。 同じで、私はそれで刺しを取るだろうが、私はここにいくつかの仮定をしなければならない(要約)Javaテキストフィールドを配列リストに渡すには?

////// PALOS TEXTFIELD 

List<Form> myList = new ArrayList<Form>(); 


     id = new JTextField(20); 


     id.addKeyListener(new KeyAdapter() 
     { 
      public void keyTyped(KeyEvent ke){ 
       char char1 = ke.getKeyChar(); 
       if((!(Character.isDigit(char1))) && (char1 != '\b')){ 
         ke.consume(); 
        } 
       } 
      }); 
      id.addActionListener(handler); 
      fname = new JTextField(20); 
      fname.setFont(new Font("TimesRoman", Font.PLAIN,14)); 
      fname.setHorizontalAlignment(JTextField.CENTER); 
      fname.setBorder(BorderFactory.createEtchedBorder(3, Color.green, Color.white)); 

      fname.addKeyListener(new KeyAdapter() 
      { 
       public void keyTyped(KeyEvent ke){ 
        char char1 = ke.getKeyChar(); 
        if((!(Character.isLetter(char1))) && 
          (char1 != '\b')) 
          { 
          ke.consume(); 
          } 
          } 
          public void keyReleased(KeyEvent e){} 
          public void keyPressed(KeyEvent e){} 
          }); 
      fname.addActionListener(handler); 

    lname = new JTextField(20); 

    lname.addKeyListener(new KeyAdapter() 
     { 
      public void keyTyped(KeyEvent ke){ 
       char char1 = ke.getKeyChar(); 
       if((!(Character.isLetter(char1))) && 
        (char1 != '\b')) 
        { 
         ke.consume(); 
        } 
       } 
        public void keyReleased(KeyEvent e){} 
        public void keyPressed(KeyEvent e){} 
          }); 
    lname.addActionListener(handler); 

    year = new JTextField(20); 

    year.addKeyListener(new KeyAdapter() 
     { 
     public void keyTyped(KeyEvent ke){ 
      char char1 = ke.getKeyChar(); 
       if((!(Character.isDigit(char1))) && 
        (char1 != '\b')) 
        { 
         ke.consume(); 
        } 
       } 
       public void keyReleased(KeyEvent e){} 
       public void keyPressed(KeyEvent e){} 
        }); 
    year.addActionListener(handler); 

    course = new JTextField(20); 

     course.addKeyListener(new KeyAdapter() 
     { 
      public void keyTyped(KeyEvent ke){ 
      char char1 = ke.getKeyChar(); 
       if((!(Character.isLetter(char1))) && 
        (char1 != '\b')) 
        { 
         ke.consume(); 
        } 
       } 
        public void keyReleased(KeyEvent e){} 
        public void keyPressed(KeyEvent e){} 
       }); 
     course.addActionListener(handler); 

////PALOS BUTTONS 

    addB = new JButton(namesB[1]); 
     addB.setHorizontalAlignment(JTextField.CENTER); 
     addB.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      id.selectAll(); 
      fname.selectAll(); 
      lname.selectAll(); 
      course.selectAll(); 
      year.selectAll();      
      String textID = id.getSelectedText(); 
      String textFName = fname.getSelectedText(); 
      String textLName = lname.getSelectedText(); 
      String textCourse = course.getSelectedText(); 
      String textYear = year.getSelectedText(); 


        summary.setCaretPosition(summary.getDocument().getLength()); 

       } 
      }); 

/////pALOS TEXTAREA 

    summary = new JTextArea(11,31); 
      summary.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 5)); 
      summary.setText("ID" + newtab + "FirstName " + newtab + "LastName" + newtab + "Course" + newtab + "Year" + newline); 
      summary.setEditable(false); 
+1

コードのすべてではなく、コードの必要な部分だけを投稿するのはどうですか?誰もそのすべてのコードを調べるつもりはありません...あなたの質問を編集してください –

+0

私はむしろそのごみのほとんどよりもFormのコードを見るでしょう:) – willcodejavaforfood

答えて

1

私のJTextAreaに追加するに格納された値を、私のArrayListを使用することがあります。

// Obviously no public fields, but I cant be bothered to make constructor 
// or get/set methods 
public class Form 
{ 
    public String id; 
    public String lastName; 
    public String firstName; 
    public String course; 
    public String year; 
} 

ですから、そのボタンが押された毎回フォームのリストにフォームの新しいインスタンスを追加したい:

public class MyGui 
{ 
    private List<Form> forms = new ArrayList<Form>(); 
    private JTextField fname; 
    private JTextField id; 
    private JTextField lname; 
    private JTextField course; 
    private JTextField year; 
    // build gui .... 
} 

これはあなたの「保存/追加」ボタン

のためのアクションリスナーであります
public void actionPerformed(ActionEvent e) 
{ 
    Form form = new Form(); 
    form.id = id.getText(); 
    form.lastName = lname.getText(); 
    form.firstName = fname.getText(); 
    form.course = course.getText(); 
    form.year = year.getText(); 
    forms.add(form); 
} 
0

投稿コードの該当部分は、ボタンクリックを処理するActionListenerにあります。まず、@ willcodejavaforfoodのフォーム構造で定義されているタイプのリスト(リスト<リスト<ストリング> >)として要求したArrayListモデルを維持することができます。これにより、前の行を保持するのに簡単な時間ができます。ボタンをクリックするたびに、すでにコード化されているようにテキストフィールドからデータを取得し、モデルに新しい行として追加するだけで済みます。その後、モデルを反復処理して、JTextArea内のデータを置き換えることができます。

モデルの宣言は次のようになります。

List<List<String>> model = new ArrayList<List<String>>(); 

と更新したアクション・リスナーはこのようなものになります。

addB.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     id.selectAll(); 
     fname.selectAll(); 
     lname.selectAll(); 
     course.selectAll(); 
     year.selectAll(); 
     String textID = id.getSelectedText(); 
     String textFName = fname.getSelectedText(); 
     String textLName = lname.getSelectedText(); 
     String textCourse = course.getSelectedText(); 
     String textYear = year.getSelectedText(); 

     List<String> line = Arrays.asList(new String[]{textID,textFName,textLName,textCourse,textYear}); 
     model.add(line); 

     StringBuilder sb = new StringBuilder(); 
     sb.append("ID\tFirst\tLast\tCourse\tYear\n"); 
     for(List<String> input : model) { 
      for (String item : input) { 
       sb.append(item); 
       if (input.indexOf(item) == input.size()-1) { 
        sb.append("\n"); 
       } else { 
        sb.append("\t"); 
       } 
      } 
     } 
     summary.setText(sb.toString()); 
    } 
}); 

を少し強引ですが、それは取得仕事は終わった。列の終わりに改行を確実にするためには、適切な列の整列ときれいな方法を確保するためにもっと多くの方法がありますが、それは読者のための練習として残されています。

関連する問題