java Swing 遍历

发布于 2021-11-21 18:35:28 字数 348 浏览 834 评论 5

private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	private JTextField textField_3;
	private JTextField textField_4;
	private JTextField textField_5;

得到字符串: textField.getText();

如何遍历所有JTextField 控件,并调用getText()方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

猫九 2021-11-23 06:28:48

看了大家的回复后,问题解决了,非常感谢大家的帮助。
同时把相关完整代码贴出,看不懂的。复制到eclipse里面,应该很容易理清条理。

package lessen9;

import java.awt.Component;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
 * 测试 遍历控件,样例
 * Eclipse jigloo制作
 *
 */
public class SwingText extends JFrame {

	JPanel panel;
	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	private JTextField textField_3;
	private JTextField textField_4;
	private JTextField textField_5;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					SwingText frame = new SwingText();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public SwingText() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		panel = new JPanel();
		panel.setBounds(20, 21, 157, 110);
		contentPane.add(panel);
		panel.setLayout(null);

		JLabel lblNewLabel = new JLabel("New label");
		lblNewLabel.setBounds(0, 10, 54, 15);
		panel.add(lblNewLabel);

		textField = new JTextField();
		textField.setBounds(81, 7, 66, 21);
		panel.add(textField);
		textField.setColumns(10);

		textField_1 = new JTextField();
		textField_1.setBounds(81, 38, 66, 21);
		panel.add(textField_1);
		textField_1.setColumns(10);

		textField_2 = new JTextField();
		textField_2.setBounds(81, 79, 66, 21);
		panel.add(textField_2);
		textField_2.setColumns(10);

		textField_3 = new JTextField();
		textField_3.setBounds(98, 141, 66, 21);
		contentPane.add(textField_3);
		textField_3.setColumns(10);

		textField_4 = new JTextField();
		textField_4.setBounds(98, 188, 66, 21);
		contentPane.add(textField_4);
		textField_4.setColumns(10);

		textField_5 = new JTextField();
		textField_5.setBounds(98, 231, 66, 21);
		contentPane.add(textField_5);
		textField_5.setColumns(10);
		
		//单击读取按钮,读取JTextField里面的值并用打印到控制台。
		JButton btnNewButton = new JButton("读取");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			bl();
			}
		});
		btnNewButton.setBounds(284, 187, 93, 23);
		contentPane.add(btnNewButton);
	}

	/**
	 * 把遍历的实现,抽取成方法bl()
	 * 把得到的结果临时打印到控制台。
	 */
	public void bl() {
		//JFrame frame = null;
		Component[] cs = this.getContentPane().getComponents();//遍历内容控制面版
		for (int i = 0; i < cs.length; i++) {
			if ("javax.swing.JTextField".equals(cs[i].getClass().getName())) {
				JTextField o = (JTextField) cs[i];
				System.out.println(i + "=" + o.getText());
			}
		}
		this.panel.getComponents();//引出,这样还能遍历里面的容器,嘻嘻
	}
}
柒夜笙歌凉 2021-11-23 06:27:58

if( cs[i] instanceof JTextField) if( JTextField.class.isInstance(cs[i])) 这样写都可以,谢谢提醒

自此以后,行同陌路 2021-11-23 06:07:41

Component[] cs = frame.getContentPane().getComponents(); for (int i = 0; i < cs.length; i++) { if("javax.swing.JTextField".equals(cs[i].getClass().getName())){ JTextField o = (JTextField) cs[i]; System.out.println(i+"="+o.getText()); } }

带上头具痛哭 2021-11-23 01:01:08

textfield_n 放到 array 或者 list 里面。 或者

通过所在容器的 getComponents() 方法取出所有的组件

岁月打碎记忆 2021-11-22 19:49:49

Component[] cs = frame.getContentPane().getComponents(); for (int i = 0; i < cs.length; i++) { if("javax.swing.JTextField".equals(cs[i].getClass().getName())){ JTextField o = (JTextField) cs[i]; System.out.println(i+"="+o.getText()); } }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文