Foro de elhacker.net

Programación => Java => Mensaje iniciado por: carmen77 en 17 Octubre 2010, 20:33 pm



Título: JTextField con nombres que varien
Publicado por: carmen77 en 17 Octubre 2010, 20:33 pm
hola, queria preguntar una duda sobre programacion en eclipse con el lenguaje java.
es para un pasatiempo, quiero crear una tabla de n * n casillas cuyo n sera un numero

introducido por el jugador. para hacer la interfaz grafica quiero crear JTextField,

pero tiene que ser un numero variable de ellos, ya que dependera de numero de

casillas que tenga... seria algo asi
for(int fila=0; fila<longitud; fila++){
   for(int col=0; col<longitud; col++){
      JTextField nombre;
      ...
   }
}
donde pone JTextField nombre, quiero poner algo como nombre00 (fila 0, col 0),

nombre26 (fila 2, col 6).
bueno, espero haberme explicado mas o menos... alguien tiene alguna idea de como

se puede hacer? un saludo y gracias


Título: Re: JTextField con nombres que varien
Publicado por: Debci en 17 Octubre 2010, 20:45 pm
Podrias o bien hacerlo con arrays de dichos componentes, o bien ir creando instancias de dicho objeto de manera dinamica osea:
 
Código
  1. for(int filas = 0; filas < 15; filas++) {
  2. }
  3.  

Al menos eso deduzco de tu codigo, porque no entiendo muy bien lo que pides.

Saludos


Título: Re: JTextField con nombres que varien
Publicado por: carmen77 en 17 Octubre 2010, 21:04 pm
pero si pongo
Código:
for(int filas = 0; filas < 15; filas++) {
   JTextField nombre = new JTextField
}
aunque me cree todos los JTextField, al tener el mismo nombre solo me deja consultar y modificar el ultimo.
yo quiero hacer algo parecido a esto:
Código:
for(int fila=0; fila<3; fila++){
       String s= "d" + fila;
mostrar(s);
}
pero en vez de que haga: -> mostrar(s) <- quiero crear un nuevo JTextField que tenga como nombre s. no se si me habre explicado algo mejor... muchas gracias por contestar


Título: Re: JTextField con nombres que varien
Publicado por: Debci en 17 Octubre 2010, 21:17 pm
pero si pongo
Código:
for(int filas = 0; filas < 15; filas++) {
   JTextField nombre = new JTextField
}
aunque me cree todos los JTextField, al tener el mismo nombre solo me deja consultar y modificar el ultimo.
yo quiero hacer algo parecido a esto:
Código:
for(int fila=0; fila<3; fila++){
       String s= "d" + fila;
mostrar(s);
}
Por eso he sugerido que lo creases sin encapsularlo en un objeto :)

Saludos
pero en vez de que haga: -> mostrar(s) <- quiero crear un nuevo JTextField que tenga como nombre s. no se si me habre explicado algo mejor... muchas gracias por contestar


Título: Re: JTextField con nombres que varien
Publicado por: 1mpuls0 en 20 Octubre 2010, 04:41 am
Hola, creo que intentas hacer eso.

Código
  1. import javax.swing.JFrame;
  2. import java.awt.event.ActionListener;
  3. import javax.swing.JOptionPane;
  4. import javax.swing.JTextField;
  5. import java.awt.event.ActionEvent;
  6. import javax.swing.JPanel;
  7. import java.awt.GridLayout;
  8. import java.awt.event.WindowAdapter;
  9. import java.awt.event.WindowEvent;
  10. import java.awt.FlowLayout;
  11. import javax.swing.WindowConstants;
  12. import java.awt.Dimension;
  13.  
  14. public class DemoJTextField extends JFrame implements ActionListener {
  15.  
  16. private int n;
  17. private JPanel panel;
  18.  
  19.    public static void main(String[] args) {
  20. DemoJTextField djtf = new DemoJTextField();
  21. djtf.setVisible(true);
  22. djtf.setLocationRelativeTo(null);
  23.    }
  24.  
  25.    public DemoJTextField() {
  26.        initComponents();
  27.    }
  28.  
  29.    private void initComponents() {
  30.  
  31.        panel = new JPanel();
  32.  
  33.        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  34.        setTitle("JTextFields");
  35.        setResizable(false);
  36.        getContentPane().setLayout(new FlowLayout());
  37.  
  38.        panel.setPreferredSize(new Dimension(500, 500));
  39.  
  40.        int n = Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa un numero entero","Entrada",1));
  41.  
  42.        panel.setLayout(new GridLayout(n, n));
  43.  
  44.     JTextField campo [][] = new JTextField[n][n];
  45.  
  46.     for(int i=0;i<n;i++) {
  47.     for(int j=0;j<n;j++) {
  48.     campo[i][j]=new JTextField();
  49.     //campo[i][j].setText("JTextField"+i +j);
  50.     setNombreJTextField(campo, i, j);
  51.     campo[i][j].addActionListener(this);
  52.     panel.add(campo[i][j]);
  53.     }
  54.     }
  55.  
  56.        getContentPane().add(panel);
  57.        pack();
  58.    }
  59.  
  60.    private void setNombreJTextField(JTextField campo[][], int i, int j) {
  61.     String nombreJTF="";
  62.     try {
  63.     nombreJTF = JOptionPane.showInputDialog(null,"Escriba un nombre para el JTF","Nombre JTF",1);
  64.     if((nombreJTF!= null) && (nombreJTF.length() > 0)){
  65.     campo[i][j].setText(nombreJTF);
  66.     }
  67.  
  68.     }
  69.     catch(Exception e) {
  70.     e.printStackTrace();
  71.     }
  72.  
  73.    }    
  74.  
  75.    public void actionPerformed(ActionEvent e) {
  76.     System.out.println(e.getActionCommand());
  77. }
  78. }
  79.  

Le faltan muchas cosas, como:
Validar si se introdujo un dato y si ese dato es entero.
En caso de que tú quieras colocar los nombres a los JTF, verificar que no existan nombres repetidos.


Espero que te sirva.

Saludos.


Título: Re: JTextField con nombres que varien
Publicado por: Leyer en 20 Octubre 2010, 10:18 am
No es posible lo que quieres hacer.