2017-12-01 11 views
0

パネル内のすべてのテキストフィールドには、ドキュメントリスナーがあります。これは、すべてのテキストフィールドのすべての値を追加し、それを和のために他のパネルにある別のテキストフィールドに設定します。パネル内のすべてのjtextフィールドのすべての値を取得します。

私の問題は、74個のテキストフィールドがあり、forループを使用してそのすべての値をチェックする方法はありますか?私は何をすべきか分からない。

答えて

1

以下のコードを確認してください。それの要点はコメントです。

乾杯!

import java.awt.Component; 
import java.awt.Container; 
import java.util.stream.Stream; 

import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class IterateOverJTextField { 

    private static void iterateOverJTextFields(Container container) { 
     // You have to call getComponents in order to access the 
     // container's children. 
     // Then you have to check the type of the component. 
     // In your case you're looking for JTextField. 
     // Then, you do what you want... 
     // Old-style 
     for (Component component : container.getComponents()) { 
      if (component instanceof JTextField) { 
       System.out.println(((JTextField) component).getText()); 
      } 
     } 

     // New-style with Stream 
     Stream.of(container.getComponents()) 
       .filter(c -> c instanceof JTextField) 
       .map(c -> ((JTextField) c).getText()) 
       .forEach(System.out::println); 
    } 

    public static void main(String[] args) { 
     JPanel panel = new JPanel(); 
     panel.add(new JTextField("text 1")); 
     panel.add(new JTextField("text 2")); 
     panel.add(new JTextField("text 3")); 
     panel.add(new JTextField("text 4")); 

     // You have to work with your container 
     // the has the 74 fields. I created this 
     // panel just to test the code. 
     iterateOverJTextFields(panel); 
    } 

} 
+0

ありがとうございます!神はあなたを祝福します – justuser

+0

注意してください、この方法でコンポーネントの任意のタイプを得ることは可能です:) – xxxvodnikxxx

関連する問題