2010-12-02 31 views
5

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

+0

¿Cómo se convirtió de JFrame a JPanel? ¿Y trataste de establecer alguna propiedad para activar la generación de código? – Puce

+0

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

+0

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

Respuesta

5

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 ...

1

Puede consultar Team > Local History para ver si puede revertir.

+0

Vea también este [Q & A] (http://stackoverflow.com/q/19714659/230513). – trashgod

3

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).

0

¿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.

0

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):

  1. abierto YourPanel.java en algún editor
  2. Eliminar la línea con setDefaultCloseOperation....
  3. Reemplazar todo getContentPane() con this
  4. Eliminar pack(); en la última línea.
  5. abierto YourPanel.form en algún editor
  6. Eliminar el nodo <Properties> (y todo dentro)
  7. suprimir el nodo <SyntheticProperties>.
  8. 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.

0

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. :)

2

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!

0

Acabo de tener el mismo problema y resulta que la solución fue bastante simple.

  1. Como han dicho otros, haga una copia de seguridad de su archivo.
  2. Abra su clase JFrame y edítela para extender JPanel en lugar de JFrame.
  3. Corte el método de su método principal y póngalo en otra clase.
  4. cierre el proyecto NetBeans IDE NetBeans y
  5. 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" 
  1. Después de que hayas guardado eso. Abra de nuevo el proyecto netbeans. (Se abrirá con un error)
  2. Modifique una de las propiedades del JPanel.
  3. 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!