Button und andere Objekte genau platzieren

Hi, der Javadokumentation habe ich entnommen, dass dies mit der Methode public void setBounds(int x, int y, int width, int height) möglich ist. Dies habe ich gleich auf einen JButton angewendet. Leider hat er sich überhaupt nicht bewegt oder seine Größe verändert. Ich habe als LayOut-Manager „FlowLyout“ gewählt, oder auch garnichts. Ich habe setBounts() vor oder auch nach dem Hinzufügen auf dem Frame auf den Button angewendet. Ich weiß, ich habe nicht viel probiert, aber mir fällt einfach nichts mehr ein, was ich testen könnte. Die Suchmaschine meines Vertrauens macht mich auch nicht schlauer, ich hoffen, dass ihr mir bei dem Problem helfen könnt.

Hallo,

ich bin mir zu fast 100% sicher das (google und auch im Forum hier) dir das Geheimnis verraten können ^^.

NUN noch mal ganz einfach:

JButton btn = new JButton („exit“);
btn.setLayout(null);
btn.setBounds(x, y, width, height);
/*
btn…setActionCommand(„exit“);
btn.addActionListener(hier deinen ActionL. eintragen);
*/
deinFrame.add(btn);
btn.setVisible(true);

das sollte es tun, da das alles OOP kompatiebel ist sollte die Reihenfolge nicht die große Rolle spielen, aber machs so. (ist meiner Erfahrung nach am besten.)

MfG DK

Problem gelöst
Google hat mir nicht geholfen, ich habe all meine 3 Fragen, die ich gestern Abend gestellt habe ausführlich gegooglet. Was du mir gesagt hast, hat leider nicht funktioniert, ein Fehler steckte darin. Anderswo hat man mir gesagt, ich müsse den Lyoutmanager für den Frame deaktivieren, den habe ich auf null gesetzt und jetzt funktioniert es. Danke für die Hilfe :smile:

Mich schaudert immer, wenn die LayoutManager nicht verwendet werden… baust Du Dir eine eigene Komponente oder willst Du nur Buttons und Eingabefelder pixelgenau platzieren?

Du solltest Dich lieber mit GridBagLayout beschäftigen, denke ich.

Moin,

nur als Anmerkung … ich lass mir ungern Vorschreiben wie und wo ich mein componenten anordne … idR verwende ich mein eiges Layout und das gibt es nun mal so nicht als Manager …

und was spricht gegen pxlgenau Platzierung ?

MfG DK

Naja, Pixelangaben sind im Zweifelsfall nur auf einem Bildschirm gleich. Und bis jetzt hab ich noch kein Layout gesehen, dass man mit GridBagLayout nicht hinbekommen hat und das hinterher nicht auch auf anderen Bildschirmen mit unterschiedlichen Höhen/Breiten besser aussah als ein fixes Layout.

Gutes Beispiel aus dem anderen Thread: Eclipse. Es gibt ein paar Dialog, die feste Pixelposition und -breiten verwenden. Selbst wenn der Dialog dann in der Größe veränderlich ist (und ich *hasse* Dialoge, die man nicht größer ziehen kann), bleiben die Bedienelemente so kurz wie vorher, so dass ich auch nicht mehr lesen kann. Wenn man jetzt ein flexibles Layout verwendet, dann werden z.B. auch die Eingabefelder bzw Listen länger, wenn ich den Dialog vergrößere. Dann kann ich mehr lesen bzw dann kann ich erst die gesamte Liste schnell durchgucken, anstatt mühsam hin und her zu scrollen.

Hier ist noch ein kleiner Link auf einen Artikel bei DZONE zum Thema: http://www.javalobby.org/java/forums/t92382.html Ist von 2007, aber da hat man bereits den Unterschied zwischen DPI und Pixel besprochen. Mit dem Retina-Display auf Apples Iphone geht’s los, aber ich würde drauf tippen, dass die nächsten Bildschirme immer höhere DPI haben werden. :smile:

Hi,

ich geb dir ja recht ^^ … nur das ich mir zu Programmstart die auflösung samt dpi hole und iner eigen class die berechnung fürs größer ziehn, positionieren usw selber definiert habe (zumal gewisse optionen geändert werden können, so das der user selber entscheidet wie wo was sein soll ^^) … ich würd es dir gern zeigen … aber ich bin noch iner Entwicklungspahse und durchs studium kommt man net so voran, wie man manchmal möchte ^^

Ist halt ne Frage, der Einstellung und wo es gebraucht wird ^^

MfG DK

ich geb dir ja recht ^^ … nur das ich mir zu Programmstart
die auflösung samt dpi hole und iner eigen class die
berechnung fürs größer ziehn, positionieren usw selber
definiert habe (zumal gewisse optionen geändert werden können,
so das der user selber entscheidet wie wo was sein soll ^^) …

Ah, also ist das Teil der Übung. Es kann natürlich immer Gründe geben, wieso man *nicht* den von der Sprache gelieferten Funktionsumfang nutzen will. Aber gerade wenn Du wenig Zeit hast bzw das Ziel Deiner Anwendung nicht in der Darstellung von UI-Elementen liegt, würde ich mich damit nicht aufhalten und die mitgelieferten Wege des JDK nutzen.

Ist halt ne Frage, der Einstellung und wo es gebraucht wird ^^

Das ist richtig. Es kann immer Anforderungen geben, die für die Erstellung eigener Lösungen sprechen. Aber die sollte man dann gut begründen können. Ich versuch bei meinen Entwicklungen immer davon auszugehen, dass jemand anders morgen weiter machen muss und dass die Anwendung auch in 5 Jahren noch weiterentwickelt wird. Und dann können Sonderlösungen wirklich den Unterschied zwischen Wartbarkeit und Wegwerfen ausmachen. :wink: