| |||
JButton desde JFrame? Bueno pues tengo la duda de que cuando creamos una clase para que aparezca una ventana utilizamos JFrame de la libreria swing, pero ademas de eso hay que colocar extends para hacer uso de sus metodos dentro de la clase, porque con Jbutton no hay que poner extends? es que JButton deriva de JFrame, porque por mas que leo no veo ninguna herencia directa desde JFrame, en fin, gracias. |
| ||||
Respuesta: JButton desde JFrame? Hola, Cita: Estás mezclando dos cosas completamente diferentes, una es el uso normal de objetos y otra es la herencia de clases.
Iniciado por luigimaldini Bueno pues tengo la duda de que cuando creamos una clase para que aparezca una ventana utilizamos JFrame de la libreria swing, pero ademas de eso hay que colocar extends para hacer uso de sus metodos dentro de la clase, porque con Jbutton no hay que poner extends? es que JButton deriva de JFrame, porque por mas que leo no veo ninguna herencia directa desde JFrame, en fin, gracias. Cuando tienes una clase cualquiera puedes extenderla para que tenga mejor funcionamiento, por ejemplo:
Código Java:
En el caso de MySuperJFrame estás diciendo que vas a crear un JFrame mas avanzado que el simple JFrame, así también MySuperJButton puede tener también otras cualidades mejoradas que un simple JButton, por ejemplo que al presionarlo haga algún tipo de animación.Ver original Ahora bien, cuando usas un objeto no lo estás extiendo, simplemente lo estás usando, por ejemplo:
Código Java:
En el caso del frame simplemente estás haciendo una ventana, sin funcionamiento específico, es decir, una ventana vacía. Si llamas al método setVisible(true) del frame, se va a ver una ventana sin nada (simplemente la barra de título y los botones de minimizar, maximizar y cerrar típicos de las ventanas). Aunque posteriormente puedas cambiarle el título, los colores, tamaño, etc. Por ejemplo:Ver original
Código Java:
Así también en el caso del JButton estás haciendo un botón vacío, sin funcionamiento y sin texto. Posteriormente puedes agregarle funcionamiento con un addListener() de cualquier tipo y puedes cambiarle el texto, colores, etc. Por ejemplo:Ver original
Código Java:
Para entender completamente el concepto busca un tutorial en Java sobre 'Herencia'.Ver original Saludos, |
| |||
Respuesta: JButton desde JFrame? Hola amigo, tu respuesta me ha servido para ver todo con bastante claridad, el problema de todo esto es que por muchos manuales que leas en internet o videotutoriales que veas jamas se entienden las cosas como son en realidad, los manuales muchos de ellos con errores ortograficos no te llegan a comprender el porque de las cosas, y los videotutoriales las personas que explican piensan que somos trabajadores de microsoft, y somos personas que pretendemos aprender poco a poco, te digo esto porque en todos los manuales leido y videotutoriales visto siempre he visto la misma sintaxis, te dejo un detalle: import javax.swing.* public class Ventana extends JFame{ } Si yo veo esa sintaxis en todos los manuales de la web y videotutoriales pienso que para utilizar metodos y miembros de esa clase necesito la palabra clave extends, de ahi mi pregunta en el post, tu me has dado la respuesta que me ha ayudado, pero en la red no encuentras esa respuesta.porque en lugar de hacer eso para una ventana no hacen esto? import javax.swing.* public class Ventana { public static void main(STring[] args) { JFrame Ventana = new JFrame(); Este ultimo codigo es el que tienen que poner en manuales para saber que no se necesita un extends para crear ventana, no se si entiendes lo que intento decirte, primero hay que explicar el codigo de abajo para entender que con import tienes todo listo para crear el objeto, y con la de arriba creas tu clase con todos los metodos y atributos heredados de JFRame, creo que empiezan la casa por el tejado en lugar de por la base, y eso es un error grave para los que estamos aprendiendo con esfuerzo la POO, y menos mal que yo vengo de haber programado hace muchos años en Cobol, pascal, gwbasic, etc.... que sino entonces la llevaria clara. Gracias de nuevo y un saludo. |
| |||
Respuesta: JButton desde JFrame? Amigo he puesto el ejemplo de la red porque es el mismo en todos los tutoriales y videotutoriales que he visto, no se si me entendiste, yo entiendo lo que tu dices y lo que el compañero me explico perfectamente, pero lo que intento decir es que para crear una ventana no hace falta colocar un extens JFRame como he visto en todos los tutoriales, basta con import y listo, despues en la main creas el objeto y si quieres cambiar texto,color tambien lo haces una vez creado el objeto: import javax.swing.* public class ventana { public static void main(String [] args) { JFrame ven = new JFrame(); ven.setTitle("nuevo titulo"); // aqui cambiamos el titulo ven.setSize(300,300); // aqui cambiamos el tamaño Lo que intento decir es que todo se puede hacer desde la main sin tener que crear una clase y un extends del JFRame, creo haberme explicado. Digo esto para que la gente sepan como hacer una ventana sin necesidad de tener que crear una clase especial y un extends de esa clase. Gracias y un saludo. |
| ||||
Respuesta: JButton desde JFrame? Hola, Cita: En lo personal me parece que aprender programación con vídeos es una pérdida de tiempo increíble, de los pocos vídeos que he visto de programación en youtube u otros me hubiera tomado un décimo del tiempo invertido en ver el vídeo leer una hoja de un manual.Diferente es google video, (aunque vienen del mismo árbol), que explican tecnologías de forma abstracta para que uno las interprete. Como por ejemplo el HTML 5, no te explican como hacer una página, sino para qué sirve y las novedades. Cita: Yo creo que la forma de explicar en los tutoriales el hecho de usar extends para implementar las ventanas es correcta. El hecho es el siguiente, primero la mayoría de las veces vas a estar usando extends para crear ventanas, y segundo cuando ya tienes la experiencia y estás avanzado en el tema de la herencia puedes comprender este concepto mas fácilmente. Cita: Todo depende del objetivo deseado, porque técnicamente es válido crear ese tipo de aplicaciones, pero en lugar de herencia está usando polimorfismo múltiple por medio de encapsulación. Y tienes toda la razón, al no heredar de JFrame no es un JWindow ni hereda del mismo lugar por lo tanto no se puede usar en interfaces.Es bueno aclarar que no es lo mismo, aunque como mencioné antes, depende del objetivo. Cita: Si es posible hacerlo de la forma que expones, pero no es lo mismo, primero pierdes la herencia, pierdes el acceso a los métodos 'protected' y los paradigmas de programación que tienes que usar son completamente diferentes, normalmente requieren mayor experiencia para poder modificar su funcionamiento y al final resulta más difícil.
Iniciado por luigimaldini ... pero lo que intento decir es que para crear una ventana no hace falta colocar un extens JFRame como he visto en todos los tutoriales, basta con import y listo, despues en la main creas el objeto y si quieres cambiar texto,color tambien lo haces una vez creado el objeto: ... El mejor ejemplo creo que es el JTable y el DefaultTableModel, la mayoría de personas usan el JTable directamente, agregando filas y columnas (al estilo que mencionas de usar el JFrame sin extenderlo), si aprendieran a extender el DefaultTableModel o implementar el AbstractTableModel se les haría mucho mas fácil hacer programas muy complejos. Cita: Yo creo que hay que tener el conocimiento para hacerlo de las dos formas, porque en algún lugar de tus aplicaciones posiblemente necesites ponerlos en práctica.Pero tiene que quedar bien claro que no es lo mismo, lo único que tienen en común es que te muestra un JFrame en pantalla, pero internamente es como hablar de manzanas y casas, dos cosas completamente diferentes. Saludos, Última edición por HackmanC; 09/11/2011 a las 14:41 Razón: Ejemplo de JTable |
| |||
Respuesta: JButton desde JFrame? Claro que tienes razon en todo lo que escribes, pero lo que pretendia hacer entender que la ventana creada es igual en ambos ambitos, otra cosa es la forma de actuar internamente cada programa, en fin, solo eso.saludos. |
Etiquetas: |