2010-12-02 17 views
5

Ich überdenke das Design meiner GUI. Ich entwarf ein paar JFrame mit Netbeans automatisierter GUI (ja, ich bin faul, und dieser generierte Code ist oft schrecklich, ich weiß!), Aber jetzt will ich, dass sie JPanel sind (eigentlich von einer anderen Klasse erben, die JPanel erbt) . Aber ich hatte die "setDefaultCloseOperation" geändert, so dass mein Code gebrochen ist: setDefaultCloseOperation ist unmöglich für eine JPanel. Da ich den generierten Code nicht ändern kann, habe ich mich gefragt: Gibt es eine Möglichkeit, Netbeans zu verstehen, dass ich meine Meinung geändert habe und den Code neu generiere?Von JFrame zu JPanel in Netbeans

+0

Wie haben Sie von JFrame zu JPanel konvertiert? Und haben Sie versucht, eine Eigenschaft zum Auslösen der Code-Generierung festzulegen? – Puce

+0

Errr ... Ich habe gerade den "extends JFrame" nach meinem Klassennamen geändert. Ich habe versucht, Eigenschaften zu ändern, aber es schien nichts zu ändern ... – Raveline

+0

Alles klar, Puces Idee funktionierte für einen meiner JFrame und mischte sich mit dem XML, wie von Dave * vorgeschlagen, * machte es merkwürdigerweise wieder Code. Danke für all deine Antworten! – Raveline

Antwort

5

Wenn ich dies (ich habe das gleiche schon einmal getan) Ich normalerweise am Ende muss die generierte Code-XML-Datei (.form-Datei) oder kopieren Sie einfach alle Steuerelemente, die ich hinzugefügt und einfügen in ein neues JPanel. Nur meine $ 0.02, aber passen Sie auf, dass das Ihren Code brechen kann ...

1

Sie können in Team > Local History schauen, um zu sehen, wenn Sie zurückgehen können.

+0

Siehe auch dieses [Q & A] (http://stackoverflow.com/q/19714659/230513). – trashgod

3

IMHO, nb wird das automatische Refactoring in diesem Fall nicht verwalten; Es ist einfacher, ein neues Panel hinzuzufügen und alle Elemente aus Ihrem alten JFrame zu kopieren und zu kopieren (ihre Methoden werden ebenfalls kopiert).

0

Können Sie nicht einfach die setDefaultCloseOperation() und alle anderen Aufrufe von Methoden entfernen, die nicht mehr in der Superklasse sind? Dieser Aufruf ist definitiv nicht sinnvoll, da die Klasse kein JFrame ist.

0

Ich weiß jetzt nicht, was Sie kaputt gemacht haben, aber ich kann Ihnen Folgendes sagen: Sie können Netbeans nicht sagen, dass er seinen eigenen generierten Code so ändern soll, wie Sie ihn beschrieben haben.

können Sie versuchen, die folgenden (achten Sie darauf, bevor ein Backup machen):

  1. öffnen YourPanel.java in einigen Editor
  2. die Zeile mit setDefaultCloseOperation... löschen.
  3. Alle ersetzen getContentPane() mit this
  4. pack(); in der letzten Zeile löschen.
  5. öffnen YourPanel.form in einigen Editor
  6. Löschen Sie den Knoten <Properties> (und alles in)
  7. <SyntheticProperties> den Knoten löschen.
  8. Im Wurzelknoten Wechsel von <Form ... type="...JPanelFormInfo"> in <Form ... type="...JFrameFormInfo">

Soweit ich beobachtete, kann alles innerhalb der Formulardatei auseinander innerhalb <Layout> aus dem Material gelöscht werden.

Viel Glück.

0

Ja, Sie können es einfach kopieren und in JPanel einfügen. Stellen Sie sicher, dass Ihre JPanel-Größe größer oder gleich der vorhandenen JFrame-Containergröße sein muss. :)

2

Bevor Sie dies tun, schließen Sie die Datei in Netbeans und sichern Sie die .java und die .form-Datei, die Sie bearbeiten werden.

Ich hatte gerade dieses Problem und reparierte es, indem ich die .form-Datei änderte, die mit Ihrer .java-Datei für den gegebenen Typ folgt. In Anfang der XML-Datei finden Sie eine sehen:

<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> 

Gerade dies ändern:

<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo"> 

Beachten Sie, dass ich diesen Teil nur geändert:

type="org.netbeans.modules.form.forminfo.JPanelFormInfo" 

Nachdem Sie dies getan haben, öffnen Sie die Datei in Netbeans, es wird Ihnen nun sagen, dass es einen Fehler gibt, weil Sie könnten habe einige Eigenschaften eingestellt, die für ein JPanel nicht verfügbar sind, aber für den JFrame. Klicken Sie einfach auf "Bearbeiten" und ändern Sie dann einen Wert in Ihrer GUI. Dadurch wird der generierte Code neu generiert und auf diese Weise werden die Eigenschaften entfernt, die nicht anwendbar sind.

Es sollte jetzt für Sie behoben werden .. Ich hoffe, das hat ein wenig geholfen!

'Prost!

0

Ich hatte gerade das gleiche Problem und es stellt sich heraus, die Lösung war ziemlich einfach.

  1. Wie andere bereits gesagt haben, erstellen Sie eine Sicherungskopie Ihrer Datei.
  2. Öffnen Sie Ihre JFrame-Klasse und bearbeiten Sie sie, um JPanel statt JFrame zu erweitern.
  3. Schneiden Sie Ihre Hauptmethodenmethode aus und fügen Sie sie in eine andere Klasse ein.
  4. Schließen Sie die NetBeans-Projekt und Netbeans IDE
  5. Ihre .form Datei in einem Text editer öffnen, die im src Ordner und ändern Sie die erste Zeile von diesem befindet:

    Zustand = "1.5" maxVersion =“ 1.8" type = "org.netbeans.modules.form.forminfo.JFrameFormInfo"

dazu:

Form="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo" 
  1. Nachdem du das gespeichert hast. Öffnen Sie das Netbeans-Projekt erneut (es wird mit einem Fehler geöffnet)
  2. Ändern Sie eine der Eigenschaften des JPanel.
  3. Führen Sie das Programm aus. Netbeans werden automatisch alle Methoden entfernen, die nur mit einem JFrame verknüpft sind. und es wird gut laufen.

Hoffe, dass jemand hilft!

Verwandte Themen