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
Podrias o bien hacerlo con arrays de dichos componentes, o bien ir creando instancias de dicho objeto de manera dinamica osea:
for(int filas = 0; filas < 15; filas++) {
new JTextField
}
Al menos eso deduzco de tu codigo, porque no entiendo muy bien lo que pides.
Saludos
pero si pongo
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:
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
Cita de: carmen77 en 17 Octubre 2010, 21:04 PM
pero si pongo
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:
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
Hola, creo que intentas hacer eso.
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
import javax.swing.JPanel;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.FlowLayout;
import javax.swing.WindowConstants;
import java.awt.Dimension;
public class DemoJTextField extends JFrame implements ActionListener {
private int n;
private JPanel panel;
public static void main(String[] args) {
DemoJTextField djtf = new DemoJTextField();
djtf.setVisible(true);
djtf.setLocationRelativeTo(null);
}
public DemoJTextField() {
initComponents();
}
private void initComponents() {
panel = new JPanel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("JTextFields");
setResizable(false);
getContentPane().setLayout(new FlowLayout());
panel.setPreferredSize(new Dimension(500, 500));
int n = Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa un numero entero","Entrada",1));
panel.setLayout(new GridLayout(n, n));
JTextField campo [][] = new JTextField[n][n];
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
campo[i][j]=new JTextField();
//campo[i][j].setText("JTextField"+i +j);
setNombreJTextField(campo, i, j);
campo[i][j].addActionListener(this);
panel.add(campo[i][j]);
}
}
getContentPane().add(panel);
pack();
}
private void setNombreJTextField(JTextField campo[][], int i, int j) {
String nombreJTF="";
try {
nombreJTF = JOptionPane.showInputDialog(null,"Escriba un nombre para el JTF","Nombre JTF",1);
if((nombreJTF!= null) && (nombreJTF.length() > 0)){
campo[i][j].setText(nombreJTF);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
}
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.
No es posible lo que quieres hacer.