Swing-Rechner - erste GUI-Programm - Code Review Stapelaustausch
tempNumbers ist nicht ein sehr erklärender Variable Namen. Lassen Sie die Variable selbst beschreiben, was es ist Temperatur für. obwohl für einen einfachen Rechner, vielleicht number1 und number2 ausreichen würden.
Sie verwenden seltsamen Einzug in Ihrem Konstruktor. Es ist gut, dass Sie die Felder trennen, aber keine Notwendigkeit, eine zusätzliche Vertiefung für die Linien hinzuzufügen, wo Sie Methoden auf den Tasten rufen.
Die Klasse numberButtonsAction sollte mit der Hauptstadt N benannt werden, um im Einklang mit den Java-Codierung Konventionen.
Sie haben diese Option, wenn im Code:
Aber wenn Sie klar, dass Textfeld, Sie legen Sie es nicht auf „0.0“. Sie legen Sie es auf eine leere Zeichenfolge:
Ich bin nicht sicher, wie es funktioniert alles, wenn es ausgeführt wird, aber es ist ein bisschen misstrauisch zu mir. Vielleicht würden Sie den Text als doppelt zu analysieren (es auf 0,0 gesetzt, wenn es keine Zahl ist), um den Wert überprüfen und zu vergleichen, statt den Text den Wert mit. obwohl eine Idee einfach.
Für die verschiedenen Operationen sollten Sie betrachten die Strategie-Muster verwenden.
Sie können eine ENUM anstelle eines Byte verwenden.
Wenn Sie 8 Java verwenden würden, könnten Sie den DoubleBinaryOperator Schnittstelle und Lambda-Ausdrücke verwenden. Sie könnten auch unter Verwendung von Java-Methode Referenzen die ganze Action Dinge viel glatter. button.addActionListener (dies :: divideButtonClick); (Ich liebe Java 8!)
Die aktuellen Klassennamen DivideButton. MultiplyButton etc klingt wie sie JButton verlängern. aber sie tun es nicht (und sie sollten nicht so, das ist gut). Bessere Namen würden Zuhörer am Ende des Hinzufügen, jedoch, wenn Sie nicht in der Lage sind Java verwenden 8 können Sie eine gemeinsame Klasse wie folgt erstellen:
Und es wie folgt verwenden:
Derzeit verwenden Sie eine Schleife, um die Tasten zu erstellen:
Und dann haben Sie eine Schleife mit den Tasten an der Platte hinzuzufügen:
Und ein anderer, etwas weiter unten, die Zuhörer zu schaffen:
Sie brauchen nicht alle diese drei Schleifen. einfach ist man genug. Dies wird auch die Arrays machen Sie unnötige verwenden. Es gibt keine Notwendigkeit, sie in einem Array überhaupt zu speichern.
Sie sind nicht das Verhalten von JFrame so zu modifizieren, warum sollte man es erweitern. Es ist ein „gemeinsamer“ Fehler mit Schaukel. Sie sollten sie JFrame für ein privates JFrame Feld in der Klasse entfernen. Dies wird so gut wie nichts, um Ihren Code zu ändern, da alle tun würde, ist, anstatt direkt hinzufügen aufrufen, rufen Sie es auf Ihrem Gebiet. Was wird sich ändern, ist Ihr nicht so viel zu JFrame binden werden. Waht, wenn Sie einen JDialog anstelle eines JFrame wollen. ein Feld hat, wird diese Änderung erleichtern. (In Ihrem Fall erhalten Sie einen JFrame brauchen, aber es kann nicht immer der Fall sein).
Es gibt etwas, das ich über Ihren Code mag, keine absolute Position! Sie wissen nicht, wie viel diese wertvoll ist eine GUI zu halten! Ich beschäftige mich mit GUI mit absoluter Position, und es ist einfach schrecklich! Lass es so wie es ist. Verwenden Sie das Layout-Sie brauchen, nicht zu restriktiv sein, in Ihrem Design und nie (auch nicht nie) positionieren Ihre Komponenten in absoluter Weise.
Ich persönlich nicht mag, wenn Sie den Namen der Klasse in einer Variablen nennen.
Wenn Sie jemals Ihre Klasse ändern, oops müssen Sie Ihre Variablennamen ändern oder wird es inkonsequent sein! Sie könnten für resultText gehen oder einfach nur zur Folge haben, aber Sie wirklich brauchen nicht zu erwähnen, dass es ein JTextField ist.
beantwortet 19 '14 Juni um 17:21 Uhr
Ich bin vollkommen einverstanden über alles. Erweitern von JFrame, anstatt es zu verwenden ist ein Fehler, die ich habe auch viele Male getan. Dieses Problem wird mehr oder weniger mit JavaFX gegangen, zum Glück :) - Simon Forsberg ♦ 19. Juni '14 um 17:59 Uhr