0
パネル内のすべてのテキストフィールドには、ドキュメントリスナーがあります。これは、すべてのテキストフィールドのすべての値を追加し、それを和のために他のパネルにある別のテキストフィールドに設定します。パネル内のすべてのjtextフィールドのすべての値を取得します。
私の問題は、74個のテキストフィールドがあり、forループを使用してそのすべての値をチェックする方法はありますか?私は何をすべきか分からない。
パネル内のすべてのテキストフィールドには、ドキュメントリスナーがあります。これは、すべてのテキストフィールドのすべての値を追加し、それを和のために他のパネルにある別のテキストフィールドに設定します。パネル内のすべてのjtextフィールドのすべての値を取得します。
私の問題は、74個のテキストフィールドがあり、forループを使用してそのすべての値をチェックする方法はありますか?私は何をすべきか分からない。
以下のコードを確認してください。それの要点はコメントです。
乾杯!
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);
}
}
ありがとうございます!神はあなたを祝福します – justuser
注意してください、この方法でコンポーネントの任意のタイプを得ることは可能です:) – xxxvodnikxxx