herzchen Geschrieben 12. September 2005 Teilen Geschrieben 12. September 2005 Hi, wie schaut es aus mit Oberflächen in Java. Ich selber habe schon darin programmiert, jedoch hatte ich immer das Problem, dass ich fix angeben musste (bei einem GridLayout), welche Position das Element wie ein Jlabel zum Beispiel, haben soll. Auch vom JFrame die Start-up-Position muss ich mit ".setLocation" fix angeben, da er sonst nicht geladen wird. Welche Alternativen gibt es dazu, nicht jeder hat dieselbe Bildschirmauflösung, das muss doch auch einfacherer gehen, oder? Gruß Herzchen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 12. September 2005 Teilen Geschrieben 12. September 2005 Was genau meinst Du jetzt? Mit einem GridBagLayout z. B. muß man die Position nicht "fix" angeben, sondern nur relativ, also in welcher Zelle das Element angezigt werden soll. Und damit bleibst Du auch für alle Auflösungen dynamisch. Wenn Du allerdings auch die Positionen in der Tabelle dynamisch halten willst, mußt Du wohl einen eigenen LayoutManager schreiben. Vermute ich mal ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 12. September 2005 Teilen Geschrieben 12. September 2005 wie schaut es aus mit Oberflächen in Java.Exzellent. Ich selber habe schon darin programmiert, jedoch hatte ich immer das Problem, dass ich fix angeben musste (bei einem GridLayout), welche Position das Element wie ein Jlabel zum Beispiel, haben soll.Dann benutzt du entweder den falschen Layout Manager oder aber du hast eine falsche Vorstellung davon, was "fix" bedeutet. Natürlich musst du dem Programm auf irgendeine Art und Weise mitteilen, wo dein Label erscheinen soll. Wie soll es auch sonst wissen, wo es positioniert werden soll? Es unterscheidet sich eben nur die Art und Weise, wie diese Mitteilung erfolgt. Ohne LayoutManager muss ich dediziert sagen "Placiere mir Komponente X and Position 10,10". Mit einem BorderLayout ist es schon einfacher, da sage ich "Positioniere mit Komponente X in der oberen rechten Ecke". Ohne Zusatzinfos "Dort hin" geht es nicht. Auch vom JFrame die Start-up-Position muss ich mit ".setLocation" fix angeben, da er sonst nicht geladen wird.Natürlich - nochmal: Woher soll das System wissen, wo du gerne das neue Fenster geladen haben möchtest? Und selbst wenn es das bei dir wüsste - wer sagt denn, dass es bei mir genauso ist? Es geht nicht ohne Informationen. Oder anders gefragt: Wie stellst du dir denn das Verhalten vor? Gib mal in Psuedo-Code an, was du von einem - deiner Meinung nach - vernünftigen System erwarten würdest. Wie sollte so ein Aufruf zum Erstellen eines Fenster aussehen? Welche Alternativen gibt es dazu, nicht jeder hat dieselbe BildschirmauflösungFür solche Informationen gibt es beispielsweise Toolkit#getScreenSize() aus der du die aktuelle Auflösung bekommst und entsprechend darauf reagieren kannst. das muss doch auch einfacherer gehen, oder?Wie oben schon gesagt: Bring mal ein Beispiel, wie du es dir einfacher vorstellst und wir werden sehen, ob das in allen Einsatzgebieten funktionieren würde. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_Arvid_ Geschrieben 12. September 2005 Teilen Geschrieben 12. September 2005 Ich habe -auch nach zweimaligem Lesen- noch nicht so richtig durchblicken können, was jetzt dein eigentliches Problem ist. Also wenn ich das richtig verstehe, hast du Schwierigkeiten beim Positionieren deiner Komponenten auf deinem Panel. Eine kleine Mitschuld daran trägt offenbar das fehlende Verständnis über den Layoutmanager GridLayout, welchen du nutzt. An dieser Stelle habe ich ganze 2 Tipps für dich: Erstens: Lies dich entweder nochmal durch das SUN-Tutorial über GridLayout. (Eigentlich gibt es dort kaum was zu lesen. Ziemlich einfach zu handhaben das GridLayout. Nix anderes als eine schlichte Tabelle...) Oder Zweitens: Nimm einen anderen Layoutmanager. Für letzteren Tipp möchte ich dir jgoodies.com ans Herz(chen) legen. Dort gibt es einen sehr guten Layoutmanager, welcher auf den ach so klangvollen Namen Forms hört. (Ist jedenfalls mein persönlicher Favorit.) Ciao & Gruß. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 12. September 2005 Teilen Geschrieben 12. September 2005 Für letzteren Tipp möchte ich dir jgoodies.com ans Herz(chen) legen. Dort gibt es einen sehr guten Layoutmanager, welcher auf den ach so klangvollen Namen Forms hört. (Ist jedenfalls mein persönlicher Favorit.) <erbsenzählmodus> Der LayoutManager heisst FormLayout, das Paket heisst Forms </erbsenzählmodus> Aber dem Tip kann ich mich nur anschließen - für mich der beste LayoutManager überhaupt. Ich weiss gar nicht mehr, was ich meinen GUI Applikationen sonst für ein Chaos hätte - schnell zu lernen, einfach zu benutzen und hervorragend in den Ergebnissen. Hier und da brauch man mal ein Border- oder FlowLayout, aber eigentlich lässt sich alles damit schon erschlagen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
herzchen Geschrieben 13. September 2005 Autor Teilen Geschrieben 13. September 2005 <!-- -->Danke, mir ist schon klar, dass das System nicht erraten kann, wohin ich die Elemente platziert haben möchte. Das GridLayout - so habe ich es mir damals angelesen - ist ein tabellarisches Layout, was passend eigentlich ist für mein JTable und die Steuerelemente Buttons usw. In den Beispielen bei dpunkt.de sind auch immer nette Bildchen zu den vorherigen Codebeispielen, aber dann hat man eben entweder alles nacheinander platziert, dann habe ich .NORTH .SOUTH und die ganzen Richtung ausprobiert, das war auch alles kein Problem, funktioniert ja auch. Aber man hat eben keine Möglichkeit (so verstehe ich das zumindest) wie in HTML hinzugehen und eine Webseite tabellarisch zu gestalten. Das in Spalte Y, Zelle X ein Button gehört usw. Oder ich wende es einfach falsch an, was ich eher vermute. Also meine Reihenfolge schaut wie folgt aus: - Zuerst ein Frame erstellen, damit's nicht zu nackt aussieht: // TODO Auto-generated method stub jf.setDefaultCloseOperation(EXIT_ON_CLOSE); //Titel, Größe und Startposition für Frame festlegen jf.setTitle("DVD-Verwaltung"); jf.setSize(800,600); jf.setLocation(250, 250); Anschließend einen Panel mit scrollpane: jpanel = new JPanel(new GridLayout(0,1)); jpanel.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), title)); //jpanel.setLayout(new GridLayout(1,4)); jpanel.add(scrollp); jpanel.setVisible(true); Und nen Testbutton: jbutton.setText(text); jbutton.setLocation(loc1,loc2); jbutton.setSize(siz1,siz2); wobei ich die Elemente in Funktionen einer clsElements-Klasse geschrieben habe und in einer clsMain versuche, die notwendigen Elemente aufzurufen und geeignet zu platzieren. Das getScreenSize kannte ich zum Beispiel noch nicht, ist wieder ein Ansatz mit dem ich arbeiten kann. Also ich schnupper mal in die Links, Thx! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 13. September 2005 Teilen Geschrieben 13. September 2005 jpanel = new JPanel(new GridLayout(0,1)); ... jbutton.setText(text); jbutton.setLocation(loc1,loc2); jbutton.setSize(siz1,siz2); So klappt das auch nicht ... Das mußt Du so machen: jpanel = new JPanel(new GridLayout(0,1)); ... jbutton.setText(text); //jbutton.setLocation(loc1,loc2); jbutton.setSize(siz1,siz2); jpanel.add(jbutton); //Den Rest übernimmt das GridLayout Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 13. September 2005 Teilen Geschrieben 13. September 2005 Exzellent. Darüber kann man vortrefflich streiten ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 13. September 2005 Teilen Geschrieben 13. September 2005 Darüber kann man vortrefflich streiten ;-)Und wie man das kann *g*. Allerdings bleibe ich bei der Meinung, dass in den seltensten Fällen die verwendete Technik bei der Oberflächenerstellung das Problem darstellt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.