127.0.0.1 Geschrieben 19. Juni 2012 Geschrieben 19. Juni 2012 so, ich habe mal wieder ein bischen freizeit, die ich nicht nur mit diablo 3 vertrödeln will und möchte, inspiriert durch die em, in die java-programmierung eintauchen und ein WM-EM-Tippspiel-Tabelle-Spielplan-Programm mit gui schreiben. vorhanden sind:werkzeugedickes java-buch inkl. kapitel über swinggrundlegende programmierkenntnissegrundlegende java-kenntnisseich weiß, was oop ist mit guis habe ich noch nie gearbeitet. ebenso wenig habe ich eine ahnung von modellierung... bis jetzt habe ich alles prozedural auf console gemacht. und da fängt auch mein problem an: was ist der erste schritt, den ich machen muss. muss ich das ganze programm erst einmal mit papier und bleistift entwerfen, dann die gui entwerfen und erst dann die einzelnen klassen und funktionen schreibwen? wie detailiert müssen die vorüberlegungen sein? auf was muss ich achten? Zitieren
sebi680 Geschrieben 19. Juni 2012 Geschrieben 19. Juni 2012 so, ich habe mal wieder ein bischen freizeit, die ich nicht nur mit diablo 3 vertrödeln will und möchte, inspiriert durch die em, in die java-programmierung eintauchen und ein WM-EM-Tippspiel-Tabelle-Spielplan-Programm mit gui schreiben. vorhanden sind:werkzeugedickes java-buch inkl. kapitel über swinggrundlegende programmierkenntnissegrundlegende java-kenntnisseich weiß, was oop ist mit guis habe ich noch nie gearbeitet. ebenso wenig habe ich eine ahnung von modellierung... bis jetzt habe ich alles prozedural auf console gemacht. und da fängt auch mein problem an: was ist der erste schritt, den ich machen muss. muss ich das ganze programm erst einmal mit papier und bleistift entwerfen, dann die gui entwerfen und erst dann die einzelnen klassen und funktionen schreibwen? wie detailiert müssen die vorüberlegungen sein? auf was muss ich achten? Am Anfang ist es wirklich nicht einfach, gut strukturierten und "schönen" Code zu schreiben und auch nach mehreren Jahren Programmieren schaut man sich noch oft genug wenige Wochen alten Code an und denkt sich, dass man das anders doch hätte schöner lösen können Ohne viel praktische Erfahrung ist eine "verbindliche" Vorplanung ohnehin noch wesentlich schwerer, da du ja bereits im Vorfeld die Lösung zu Problemen wissen musst, von denen du bei deinem derzeitigen Wissensstand noch nicht einmal weißt, dass es sie überhaupt geben wird Generell ist es eine sehr gute Idee, deine Oberfläche, alle Dialoge und Masken vorher auf Papier zu skizzieren. Gerade bei großen und komplexen Masken kommst du bei Swing nicht um das berüchtigte "GridBagLayout" herum und insbesondere bei diesem erspart einem ausreichende Vorplanung Zeit und Frust bei der Programmierung. Es gibt ja zum Glück genügend Tutorials für alles, was mit Java zu tun hat im Internet, sodass grundsätzliche Einsteigertutorials über Oberflächenprogrammierung mit Java leicht zu finden sind. (und falls du mit "dickes java-buch inkl. kapitel über swing" die Java Insel meinst, würde ich dir zunächst davon abraten). Wichtig zu verstehen ist erstmal das generelle Konzept: - Du hast ein Fenster in der Form eines JFrames oder JDialogs - Als "benutzbare Fläche" hast du in diesem Fenster ein JPanel - In dieses JPanel kannst du dann direkt Oberflächenkomponenten wie Buttons oder Textfelder platzieren oder aber weitere JPanels, die ihrerseits z.B. Buttons oder wieder andere Panel haben. - Jedem einzelnen Panel kannst du dann einen LayoutManager wie "BorderLayout" oder "GridLayout" zuweisen. Dieses Layout bestimmt, wie dieses Panel alle Komponenten (also sowohl Buttons, als auch andere Container/Panel) in sich anordnet. => Große Anwendungen haben oft eine große Hierarchie von ineinander verschachtelten JPanels, die unterschiedliche LayoutManager haben und ihre Komponenten dementsprechend anordnen. Wenn du dieses Konzept verstanden hast, hast du den Einstieg eigentlich schon geschafft. Deine konkrete Idee lässt sich nun auf mehrere Arten umsetzen: - Du könntest eine zeilenweise aufgebaute Übersicht (GridLayout oder GridBagLayout) aufbauen, zu Beginn jeder Zeile mit einem JLabel die Partie anzeigen und rechts daneben in einem JTextfield den Tipp aufnehmen. - Du könntest allerdings auch eine JTable verwenden, wobei die, sobald es über die Standardnutzung hinausgeht, für Anfänger ziemlich kompliziert wird Ich hoffe, ich konnte dir den Einstieg ein wenig vereinfachen. Steck auf jeden Fall nicht den Kopf in den Sand, auch wenn man am Anfang bei Swing sich schon oft denkt "ich will doch nur, dass das so und so aussieht". Evtl. wäre Mantisse, der GUI Builder von NetBeans auch eine gute Idee, aber erst, wenn du die Grundlagen komplett verstanden hast. Zitieren
127.0.0.1 Geschrieben 19. Juni 2012 Autor Geschrieben 19. Juni 2012 Generell ist es eine sehr gute Idee, deine Oberfläche, alle Dialoge und Masken vorher auf Papier zu skizzieren. Gerade bei großen und komplexen Masken kommst du bei Swing nicht um das berüchtigte "GridBagLayout" herum und insbesondere bei diesem erspart einem ausreichende Vorplanung Zeit und Frust bei der Programmierung.Genau davon hatte ich schon gehört.... Es gibt ja zum Glück genügend Tutorials für alles, was mit Java zu tun hat im Internet, sodass grundsätzliche Einsteigertutorials über Oberflächenprogrammierung mit Java leicht zu finden sind. (und falls du mit "dickes java-buch inkl. kapitel über swing" die Java Insel meinst, würde ich dir zunächst davon abraten). ne, die "insel" ist es nicht. es ist "Einstieg in java 7". swing wird da nur angerissen. mit java an sich werde ich schon zurechtkommen. Aber warum nicht die "insel" und kannst du mir etwas anderes bzgl swing empfehlen? Wichtig zu verstehen ist erstmal das generelle Konzept: arrgghhh... hast recht, muss ich noch mal ganz in ruhe anschauen. ich dewnke, so wie es auf den ersten blick ausschaut, dass genau da mein hirnknoten sitzt.... Steck auf jeden Fall nicht den Kopf in den Sand, auch wenn man am Anfang bei Swing sich schon oft denkt "ich will doch nur, dass das so und so aussieht". nene, ich bin was soetwas angeht leicht masochistisch veranlagt imo muss man sich einmal durch die sch..... quälen, dann sitzt das.... Zitieren
127.0.0.1 Geschrieben 19. Juni 2012 Autor Geschrieben 19. Juni 2012 jetzt habe ich doch noch gleich eine frage (ich gebe zu, ich bin zu faul zu googlen... ): die verschachtelten panels, sind die jetzt nur zum platzieren der textboxen und buttons oder liegen da gemeinsame/vererbte eigenschaften drauf? und nochmal zum verständnis: ich plane mein programm und denke mir eine entsprechende gui aus und dann programmiere ich für jeden knopf usw. eine bestimmte aktion... ist das so richtig? Zitieren
sebi680 Geschrieben 19. Juni 2012 Geschrieben 19. Juni 2012 ne, die "insel" ist es nicht. es ist "Einstieg in java 7". swing wird da nur angerissen. mit java an sich werde ich schon zurechtkommen. Aber warum nicht die "insel" und kannst du mir etwas anderes bzgl swing empfehlen? Da gehts in meinen Augen einfach um das Hauptproblem für Einsteiger: Es geht teilweise zu schnell in für einen Anfänger uninteressante Detailtiefen. Die Insel ist eher ein Nachschlagewerk, als ein Lehrbuch für Einsteiger. Arbeite am besten einfach mal das offizielle Tutorial von Oracle zu dem Thema durch: Trail: Creating a GUI With JFC/Swing (The Javaâ„¢ Tutorials) Bei gezielten Fragen kann dir Google oder der Thread hier bestimmt helfen Da ich in den letzten 1,5 Jahren aber kaum noch was in Swing gemacht habe und seit einem 3/4 Jahr recht exzessiv JavaFX programmiere, sind meine Swing Kenntnisse allerdings mittlerweile auch etwas eingerostet Zitieren
sebi680 Geschrieben 19. Juni 2012 Geschrieben 19. Juni 2012 (bearbeitet) jetzt habe ich doch noch gleich eine frage (ich gebe zu, ich bin zu faul zu googlen... ): die verschachtelten panels, sind die jetzt nur zum platzieren der textboxen und buttons oder liegen da gemeinsame/vererbte eigenschaften drauf? und nochmal zum verständnis: ich plane mein programm und denke mir eine entsprechende gui aus und dann programmiere ich für jeden knopf usw. eine bestimmte aktion... ist das so richtig? Nein, also die Containerhierarchie dient in erster Linie nur zur Anordnung der einzelnen Komponenten und ist in nötig, da sich eben komplexe Layouts selten mit einem einzigen LayoutManager und damit mit einem einzigen JPanel, umsetzen lassen. Dennoch kann man entweder auf alle Kindkomponenten/Container eines Elements zugreifen, oder aber auch den Parent Container, also das umhüllende JPanel, eines Elements erfragen. Direkte Vererbung von Eigenschaften findet aber nicht statt. Bei größeren Projekten und Oberflächen solltest du aber Vererbung nutzen, um deinen Code übersichtlicher zu gestalten, indem du ihn auf mehrere kleinere Klassen aufteilst. Z.B. wenn du eine Art Übersicht hast, kannst du eine Klasse "UebersichtPanel" erstellen, die von JPanel erbt und den kompletten Code für dieses einzelne Panel eben in die dedizierte Klasse auslagern. Du kannst/solltest für jeden größeren Container (normale Panels oder aber auch das Menü oder die Toolbar) am besten eine eigene Klasse erstellen. In deiner "Hauptklasse" für die Oberfläche setzt du dann lediglich alles zusammen. Aber das alles musst du jetzt nicht direkt am Anfang so umsetzen, ich erwähne es lediglich, dass es nicht zu Missverständnissen kommt, weil ich es oben verneint habe, dass die Panels untereinander Eigenschaften vererben. In deinem Fall kannst du ja direkt die GUI planen, da keine komplexe Geschäftslogik dahintersteckt. Und ja, du kannst z.B. einem Button sagen, dass er, wenn er geklickt wird etwas auf der Konsole ausgeben lassen soll oder aber auch den Wert eines Textfeldes ändern soll. Du kannst aber z.B. auch für jeden Buchstaben, der in ein Textfeld getippt wird, eine Aktion auslösen. Arbeite wirklich am besten das Tutorial durch, das ich dir verlinkt habe. Auch wenn da bestimmt eine Menge drin steht, was du für dein Programm nicht brauchst, ist so ein genereller erster Überblick viel wert. edit: Auch wenns nicht sehr originell ist, aber ich habe unsren Azubis hier im ersten Lehrjahr vor kurzem auch die Aufgabe gegeben, einen Taschenrechner mit den vier Grundrechenarten unter Verwendung eines GridBagLayouts zu programmieren. Ich finde diese Übung ganz gut, da sie mehrere Aspekte der Oberflächenprogrammierung abdeckt: - Man muss die Oberfläche konzipieren und umsetzen - Wenn man einen Button klickt, muss die entsprechende Zahl in das Textfeld geschrieben werden - Wenn man auf einen Button mit einem Rechensymbol klickt, muss der derzeitige Inhalt des Textfeldes in einer Variable gespeichert und das Feld geleert werden - Anschließend gibt man die zweite Zahl ein - Bei Klick auf "=" wird der Inhalt des Textfeldes in einer 2. Variable gespeichert und je nach geklicktem Rechenzeichen werden dann die beiden Variablen verrechnet und das Ergebnis wieder in das Textfeld geschrieben Bearbeitet 19. Juni 2012 von sebi680 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.