Cada vez me entero menos de Java
Buenos días, ya no sé ni como hacer las cosas, creo que me estoy liando y no puede ser tan difícil.
Aquí les dejo un enlace a mi proyecto de ejemplo con el cual no se seguir adelante, para ver si me pueden echar una gran mano y de esa manera poder seguir:
https://dl.dropbox.com/u/54595752/Prueba2.zip
Les explico un poco lo que hace:
1º Sale la ventana de Login, donde pones nombre de usuario y contraseña y entras al programa.
USUARIO: juan
PASSWORD: juan
2º Una vez que entras al programa, tienes que ir al menú tablas y solo funciona CLIENTES
3º Aquí en la ventana CLIENTES, es donde está todo el lío:
- Primero: No puedo cerrar la ventana desde el botón de arriba a la derecha con la 'X', solo puedo cerrarla desde el botón que he añadido yo con una puerta.
- Segundo: Los controles JTextField se me quedan mal colocados, la posición la coge de una tabla llamada DDD, luego lo que quiero es que cuando le de al botón MODIFICAR que se me habiliten todos los controles.
- Tercero: Cuando estás posicionado en un JTextField, pulsando MAYUSCULAS + FLECHAS DEL CURSOR, puedes colocar el control donde más te guste.
- Cuarto: Cuando salga o cierre la ventana, lo que quiero es que vaya recorreiendo todos los controles e ir guardando en la tabla DDD las nuevas posiciones por si algún control se ha hecho mas grande o se ha cambiado su posición.
Ahora mismo estoy muy muy perdido, y ya no se como desacerme de este lio, espero que alguien me puede echar una mano y comentarme todo lo que ha cambiado para yo poder seguiradelante.
Un saludo y gracias.
- Inicie sesión o regístrese para enviar comentarios
Y si lo pones en github ( o
Y si lo pones en github ( o google code o en algún otro repositorio? )
Digo, no es que este proponiendo meterle mano, pero seguroamente es más fácil de ver que así ( desconfío de los zips )
Aparte de la sugerencia de
Aparte de la sugerencia de Oscar, también deberías echarle una revisada al tutorial oficial de Swing de Oracle para terminar de aprender a manejar tus componentes.
Empieza con algo sencillo
No quieras comenzar con proyectos grandes si no conoces el lenguaje, y mucho menos si desconoces cosas básicas de programación.
No conozco a nadie (al menos en persona) que domine al 100% un lenguaje siempre hay cosas nuevas que aprender, a muchos nos pasa cuando no salen las cosas queremos rendirnos y dejar todo.
En serio, lee un libro de programación, escribe notas, haz ejemplos aunque sean muy sencillos.
0_o
Buenos días, lo primero he
Buenos días, lo primero he leido ya unos 3 libros sobre Java, en todos es lo mismo me explican las clases que ya las se, herencia, polimorfismo, etc...
Yo soy programador desde hace 12 años y no me resulta muy dificil, pero hay conceptos que si no me los explica alguien soy incapaz de aprender por muchso libros que leea, ahí no vienen.
Por ejemplo yo hago esto:
while (rs.next()) {
nVuelta += 1;
nXPanel = result.getInt("xpanel"); // Cojo lo que hay en el campo "xpanel"
nYPanel = result.getInt("ypanel"); // Cojo lo que hay en el campo "ypanel"
nYText = result.getInt("ytext"); // Cojo lo que hay en el campo "ytext"
nWText = result.getInt("wtext"); // Cojo lo que hay en el campo "wtext"
nHText = result.getInt("htext"); // Cojo lo que hay en el campo "htext"
cEtiqueta = result.getString("etiqueta"); // Cojo lo que hay en el campo "etiqueta"
String cName = String.format("txt%d", nVuelta); // Aquí voy creando txt1, txt2, txt3, txt4, txt5, etc...
JPanel panel = new JPanel(); // Creo el panel
LabelText txt = new LabelText(nXPanel, nYPanel, nYText, nWText, nHText, cEtiqueta); // Creo un JTextField con una etiqueta
txt.setName(cName); // Le doy un "name" al JTextField que acabo de crear, como por ejemplo txt1, txt2, txt3, etc...
panel.add(txt); // Añado el JTextField al panel, en la posición dada
}
add(panel); // Añado el panel al JFrame
Pues bien hasta aquí todo bien, me va añadiendo mis controles al panel y luego al JFrame.
Después yo muevo un control por el panel, le cambio el ancho, etc... (todo esto en modo ejecución), y me gustaría saber cuando cierre la ventana, volver a recorrer todos los objetos que hay en el panel y que les he ido yo dando nombres (txt1, txt2, txt3, txt4, etc....) para ver cual es ahora su posición e ir actualizando la tabla, para que la próxima vez que entre se me coloquen donde yo dije.
No se si me explico.
Un saludo
a ver...
y luego
pues... creo que tu elección de libros no fue muy buena...
y finalmente, viendo ese código que acabas de poner; no es más fácil que uses JTable?
Buenas tardes, todo el mundo
Buenas tardes, todo el mundo con JTable, creo que no me explico bien.
A ver, el JTable es para mostrar registros de una tabla, y yo no quiero hacer eso, para lo que yo uso la tabla de la base de datos es para meter referencias a objetos, como por ejemplo, la posinción, anchura, altura, etc.... y después ir añadiendo JTextField, JLabel, JButton, etc... en las posiciones indicadas.
No entiendo porque todos me dicen lo de JTable, si no quiero mostrar registros.
Un saludo
JPane, JComponent
Entonces lo que necesitas es hacer una clase que maneje un JPane o JComponent lo que sea, que dentro de dicho JPane ponga todos los elementos que necesitas, y crear instancias de dicho controlador conforme las necesites, agregando su JPane a un componente padre.
Un ejemplo muy burdo, en Groovy porque me da flojera escribir todo lo que se necesita para lograr lo mismo en Java:
JComponent main
JTextField tf
JButton button
ActionListener delegate
Mini(String textoBoton) {
main = Box.createHorizontalBox()
tf = new JTextField(12)
button = new JButton(textoBoton)
main.add(tf)
main.add(button)
tf.addActionListener(this)
button.addActionListener(this)
}
void actionPerformed(ActionEvent ev) {
ev.source=this
delegate?.actionPerformed(ev)
}
}
JFrame ventana = new JFrame('Ejemplo')
GridLayout grid = new GridLayout(0, 1)
ventana.contentPane.layout=grid
int cuantos = 0
JButton boton = new JButton('Agregar subcomponente')
boton.addActionListener({
int c = ++cuantos
Mini m = new Mini("Boton $c")
ventana.contentPane.add(m.main)
ventana.pack()
m.delegate={
ventana.title="${m.tf.text} (${c})"
} as ActionListener
} as ActionListener)
ventana.contentPane.add(boton)
ventana.visible=true
ventana.pack()
Ese script abrirá una ventana con un botón. Cada que oprimes el botón, aparece un campo de texto con un botón a su lado. Si escribes algo en el campo de texto y das ENTER, o si oprimes su botón, el texto de dicho campo se usa para el título de la ventana, junto con el número de botón.
http://www.javamexico.org/for
http://www.javamexico.org/foros/java_standard_edition/creacion_de_objeto...
¿12 años programando?
... ni hablar
En ese caso tomar un tipo de entrenamiento
Hola. Mientras no tengas los conceptos claros te será difícil, si aun tienes digamos huecos en los conceptos te sugiero tomar un curso o un tipo de entrenamiento. Aparentemente dominar un lenguaje y cambiarte a otro es fácil, pero requiere su curva de aprendizaje.
Layout
Creo compadre, que lo estas viendo del lado dificil creando paneles y paneles para meter componentes. A final de cuentas cuando pidas la ubicacion de un componente, esta esta basada ensu contenedor no en la ventana principal en si, osea que la mayoria de los componentes dentro de tus paneles tendran casi la misma ubicacion, en cambio la ubicacion de los paneles si variará un poco, para lo cual tienes que hacer muchos calculos.
Lo que tu buscas es un layout donde tu le digas, ponme tal componente en tal posicion con este tamaño y listo. Si se sobreescriben ni peiper, asi lo quiero. Si mal no recuerdo el editor de netbeans tiene un NullLayout que hace eso presisamente (ya que lo utiliza en su GUI editor) para poder acomodar componentes al estilo de las winforms. Dale una revisada igual y por ahi va tu problema.
Sobres