Pregunta

Espero que sea correcta plazo en cuanto a decir que los componentes de una interfaz gráfica de usuario es como JButton, JPanel, JTextField, todas esas cosas buenas.

Quiero crear un campo de texto en el que se lleva a un entero. A continuación, un botón de envío se puede presionar y basado en el número entero que fue introducida, cree que muchos campos de texto en una ventana emergente o lo que sea.

No tengo ni idea, es posible que alguien me empezó en la dirección correcta?

El problema que estoy teniendo es que no tengo ni idea de cómo crear un bucle para crear los componentes GUI. Es decir, si tengo un bucle y hacer algo como:

print("JTextField num1 = new JTextField()");

A continuación, en un bucle for creará solamente 1 campo de texto cuando quiero muchos. ¿Cómo puedo crear variables de forma genérica JTextFields?

Gracias por su ayuda ...

¿Fue útil?

Solución

Utilice un LayoutManager apropiado (por ejemplo, GridLayout) para crear y añadir sus campos de texto.

for (i = 0; i < numberOfTextFields; i++) {
    JTextField textField = new JTextField();
    container.add(textField);
    /* also store textField somewhere else. */
}

Otros consejos

Trate algo como esto:

List<JTextField> nums = new ArrayList<JTextField>();
JTextField tempField;

for (int i = 0; i < 10; i++) {
    tempField = new JTextField();
    jPanel1.add(tempField); // Assuming all JTextFields are on a JPanel
    nums.add(tempField);
}

No se olvide de configurar un controlador de disposición adecuada para el contenedor. (JPanel1 en este caso)

Me gustaría crear una lista para almacenar los campos de texto, y entonces se puede obtener de nuevo por el índice. A continuación, puede tener tantos campos como sea necesario.

List fields = new ArrayList();

// Create as many elements as you need
for (int i = 0; i < numberOfElements; i++){
  JTextField field = new JTextField();
  // Add the fields to some panel so they are shown in the screen.  
  // I assume that the component is called parent panel
  parentPanel.add(field);

  // Store the component in the list so you can retrieve it later
  fields.add(field);
}

// ...

// When you want to retrieve a particular one:

JTextField field = (JTextField)fields.get( indexToRetrieve );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top