Matriz de JTextField

Bom dia,
Sou iniciante em java e preciso fazer uma matriz de JTextfield,
cheguei até o momento nesse código,

public class Matriz extends javax.swing.JFrame {

JTextField[][] tf = new JTextField[2][2];

acredito ter criado corretamente a matriz 2x2,
abaixo segue os for para criar os JTextfields,
ela imprime 4 JTextfields na vertical, pelo que eu pude entender,
e não imprime corretamente a matriz,

private void formWindowActivated(java.awt.event.WindowEvent evt) {

    for (int linha = 0; linha < tf.length; linha++) {
        for (int coluna = 0; coluna < tf[linha].length; coluna++) {

            tf[linha][coluna] = new JTextField(" ");


            jPanel1.add(tf[linha][coluna]);

Se alguém puder me dar algumas dicas de onde estou errando na lógica agradeço,vlw

Ao invés de colocar esse código no formWindowActivated, coloque no construtor. É importante que os JTextFields sejam criados antes da janela se tornar visível.

Outra coisa, que layout manager você está usando para esse painel? Seria um GridLayout?

Alteração sugerida feita, e compreendida a importancia da mesma

Estou usando GridLayout…o problema esta no fato de que este código esta criando os jTextField
todos em uma unica linha…(se aumentar a matriz, por exemplo 10x10)o codigo ira criar 100 jTextFields em uma unica linha.

Onde o objetivo seria de ter os jTextFields dispostos em
10 colunas e 10 linhas.

Se alguém puder me dar algumas dicas de onde estou errando na lógica agradeço,vlw

Bom, posta aí o resto do código (pelo menos a parte onde você cria o JPanel 1). E não se esqueça de usar as tags code, como descrito aqui:
http://www.guj.com.br/posts/list/50115.java

Segue o código

[code]import javax.swing.JTextField;

/**
*

  • @author
    */
    public class Crossword extends javax.swing.JFrame {

    /** Creates new form Crossword */
    public Crossword() {
    initComponents();

     JTextField[][] tf = new JTextField[3][3];
    
      for (int linha = 0; linha < tf.length; linha++) {
    
         for (int coluna = 0; coluna < tf[linha].length; coluna++) {
    
             tf[linha][coluna] = new JTextField(" ");
    
             jPanel1.add(tf[linha][coluna]);
    
         }
     }
    

    }

    @SuppressWarnings(“unchecked”)

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {

            new Crossword().setVisible(true);
        }
      

      });
      }

    // Variables declaration - do not modify
    private javax.swing.JPanel jPanel1;
    // End of variables declaration

}
[/code]

E onde está a parte que vc criar (com new) o JPanel1?

O JPanel nao esta sendo criado com new…foi adicionado o componente da paleta conteiners Swing, manualmente

Nossa, que complicação. Eu faria algo mais ou menos assim:

package guj;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class TesteJTextFields extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JPanel pnlTextFields = null;
	private JPanel pnlButtons = null;
	private JButton btnOK = null;
	private JTextField[][] txtFields = new JTextField[2][3];

	/**
	 * This method initializes pnlTextFields	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getPnlTextFields() {
		if (pnlTextFields == null) {
			GridLayout gridLayout = new GridLayout();
			gridLayout.setRows(2);
			gridLayout.setColumns(3);
			gridLayout.setHgap(2);
			gridLayout.setVgap(2);
			pnlTextFields = new JPanel();
			pnlTextFields.setLayout(gridLayout);
			for (int row = 0; row < 2; row++) {
				for (int col = 0; col < 3; col++) {
					pnlTextFields.add(getTxtField(row, col));
				}
			}
		}
		return pnlTextFields;
	}

	/**
	 * This method initializes pnlButtons	
	 * 	
	 * @return javax.swing.JPanel	
	 */
	private JPanel getPnlButtons() {
		if (pnlButtons == null) {
			pnlButtons = new JPanel();
			pnlButtons.setLayout(new FlowLayout());
			pnlButtons.add(getBtnOK(), null);
		}
		return pnlButtons;
	}

	/**
	 * This method initializes btnOK	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtnOK() {
		if (btnOK == null) {
			btnOK = new JButton();
			btnOK.setText("OK");
		}
		return btnOK;
	}

	/**
	 * This method initializes txtField	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getTxtField(int i, int j) {
		if (txtFields[i][j] == null) {
			txtFields[i][j] = new JTextField();
		}
		return txtFields[i][j];
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				TesteJTextFields thisClass = new TesteJTextFields();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public TesteJTextFields() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(300, 200);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setContentPane(getJContentPane());
		this.setTitle("Teste Matriz de JTextFields");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getPnlTextFields(), BorderLayout.NORTH);
			jContentPane.add(getPnlButtons(), BorderLayout.SOUTH);
		}
		return jContentPane;
	}

}

O resultado final é mais ou menos assim:

Obrigado pelas dicas, estarei verificando assim que possível,
para compreender bem seu código,valeu