Estoy reconsiderando el diseño de mi GUI. Diseñé algunos JFrame con la GUI automatizada de Netbeans (sí, soy flojo, y este código generado a menudo es horrible, lo sé), pero ahora quiero que sean JPanel (en realidad, heredar de otra clase que herede JPanel) . Pero modifiqué el "setDefaultCloseOperation", por lo que mi código está roto: setDefaultCloseOperation es imposible para un JPanel. Como no puedo modificar el código generado, me preguntaba: ¿hay alguna manera de hacer que Netbeans comprenda que cambié de idea y regenere el código?De JFrame a JPanel en Netbeans
Respuesta
Cuando me encuentro con esto (he hecho lo mismo antes) Por lo general, termino teniendo que modificar el archivo XML de código generado (archivo .form) o simplemente copiando todos los controles que he agregado y pego en un nuevo JPanel. Solo mi $ 0.02 pero tenga en cuenta que esto puede romper su código ...
Puede consultar Team > Local History
para ver si puede revertir.
Vea también este [Q & A] (http://stackoverflow.com/q/19714659/230513). – trashgod
En mi humilde opinión, nb no gestionará la refactorización automática; es más fácil agregar un nuevo panel y copiar y pegar todos los elementos de Su antiguo JFrame (también se copiarán sus métodos).
¿No puede simplemente eliminar el setDefaultCloseOperation() y otras llamadas a métodos que ya no están en la superclase? Hacer esta llamada definitivamente no tiene sentido ahora que la clase no es un JFrame.
Ahora no sé qué rompió, pero puedo decirle esto: No puede decirle a Netbeans que cambie su propio código generado de la manera que lo describió.
Usted puede intentar lo siguiente (asegúrese de hacer una copia de seguridad antes):
- abierto YourPanel.java en algún editor
- Eliminar la línea con
setDefaultCloseOperation...
. - Reemplazar todo
getContentPane()
conthis
- Eliminar
pack();
en la última línea. - abierto YourPanel.form en algún editor
- Eliminar el nodo
<Properties>
(y todo dentro) - suprimir el nodo
<SyntheticProperties>
. - En la raíz de cambio de nodo de
<Form ... type="...JPanelFormInfo">
en<Form ... type="...JFrameFormInfo">
Por lo que he observado, todo dentro del archivo de formas se pueden eliminar, aparte de la materia dentro <Layout>
.
Buena suerte.
Sí, simplemente puede copiar y pegar en JPanel. Asegúrese de que su tamaño de JPanel sea mayor o igual al tamaño del contenedor JFrame existente. :)
ANTES DE HACER ESTO, cierre el archivo en Netbeans Y HAGA UNA COPIA DE SEGURIDAD del .java y el archivo .form que va a editar.
Acabo de tener este problema, y lo solucioné cambiando el archivo .form, que sigue con su archivo .java para el tipo dado. En la parte superior de este archivo XML verá una:
<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
acaba de cambiar esto:
<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
en cuenta que acabo de cambiar esta parte:
type="org.netbeans.modules.form.forminfo.JPanelFormInfo"
Después de haber hecho esto, vuelva a abrir el archivo en netbeans, ahora le dirá que hay un error, esto es porque usted podría han establecido algunas propiedades, que no están disponibles para un JPanel, pero sí para el JFrame. Simplemente presione Editar y luego cambie un valor en su GUI, esto lo forzará a reconstruir el código generado, y de esta manera eliminará las propiedades que no son aplicables.
Ahora debería ser arreglado para usted .. ¡Espero que esto ayude un poco!
'¡Salud!
Acabo de tener el mismo problema y resulta que la solución fue bastante simple.
- Como han dicho otros, haga una copia de seguridad de su archivo.
- Abra su clase JFrame y edítela para extender JPanel en lugar de JFrame.
- Corte el método de su método principal y póngalo en otra clase.
- cierre el proyecto NetBeans IDE NetBeans y
Abra el archivo de .Form en un editer texto que se encuentra en la carpeta src y cambie la primera línea de esta:
Formulario = "1.5" maxVersion =" 1.8" type = "org.netbeans.modules.form.forminfo.JFrameFormInfo"
a esto:
Form="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"
- Después de que hayas guardado eso. Abra de nuevo el proyecto netbeans. (Se abrirá con un error)
- Modifique una de las propiedades del JPanel.
- Ejecute el programa. Netbeans automáticamente eliminará todos los métodos que solo están asociados con un JFrame. y correrá bien.
Espero que ayude a alguien!
- 1. JPanel a JFrame
- 2. JPanel Sustitución con JPanel en un JFrame
- 3. En NetBeans ¿cómo agrego un jMenuBar a un JPanel?
- 4. cómo visualizar consola java en JFrame/JPanel
- 5. NetBeans: cómo agregar ScrollBar a JPanel
- 6. ¿Debería subclasificar JFrame/JPanel o no?
- 7. agregar espacio entre JFrame y JPanel
- 8. Limpiando mi JFrame & JPanel en un nuevo juego
- 9. Java/Swing: Obtenga Window/JFrame desde dentro de un JPanel
- 10. Cómo mostrar el visor JasperReports dentro de un JPanel/JFrame ...?
- 11. ¿Cómo cambio JPanel dentro de un JFrame sobre la marcha?
- 12. JFrame eliminar JPanels y agregar un nuevo JPanel
- 13. Añadir actionlistener a jpanel
- 14. agregando múltiples jPanels a jFrame
- 15. Agregar 2 o más objetos a JFrame
- 16. Java GUI: ¿Cómo establecer el foco en JButton en JPanel en JFrame?
- 17. Terminar ejecución de subprocesos en JFrame cerrar
- 18. JPanel no tiene respuesta a KeyListener caso
- 19. Java JPanel dentro de JScrollPane?
- 20. Desplazamiento de un JPanel
- 21. agregando JLayeredPane a JPanel
- 22. Cómo agrego componentes a un JPanel en tiempo de ejecución
- 23. loop a través de JPanel
- 24. Display gif animado en JPanel
- 25. JPanel dentro de otra
- 26. JFileChooser incrustado en un JPanel
- 27. JPanel no se actualiza hasta que cambie el tamaño de Jframe
- 28. Usar JFrame en lugar de JDialog en el Asistente de Netbeans
- 29. problema con la obtención de límites de JFrame dentro de un temporizador en Netbeans
- 30. JPanel transparente
¿Cómo se convirtió de JFrame a JPanel? ¿Y trataste de establecer alguna propiedad para activar la generación de código? – Puce
Errr ... Acabo de cambiar el "extends JFrame" después de mi nombre de clase. Traté de cambiar las propiedades, pero no pareció cambiar nada ... – Raveline
Está bien, la idea de Puce funcionó para uno de mis JFrame, y mezclarme con el XML como lo sugirió Dave * did *, curiosamente, hacer que regenere el código. Gracias por todas sus respuestas ! – Raveline