testbutton.setBounds(0, 0, 55, 55);
testbutton.setLocation(50, 50);
testbutton2.setBounds(55, 0, 44, 44);
testbutton2.setLocation(50, 100);
Werden Sie jene Aussage befreien, weil dann nichts tun.
Sie tun nichts, da der Standardlayoutmanager für den Inhaltsbereich eines JFrame ein BorderLayout
ist. Die BorderLayout
setzt die Größe/Position jeder Komponente zurück.
Die BorderLayout
erwartet, dass Sie eine "Einschränkung" angeben, wenn Sie die Komponente zum Rahmen hinzufügen. Wenn Sie die Einschränkung nicht angeben, wird "CENTER" verwendet. Es kann nur eine einzelne Komponente zu "CENTER" hinzugefügt werden, sodass nur die zuletzt hinzugefügte Schaltfläche angezeigt wird. Dies wird angezeigt, die Taste auf zwei Reihen
//frame.add(testbutton2);
//frame.add(testbutton);
frame.add(testbutton2, BorderLayout.PAGE_START);
frame.add(testbutton, BorderLayout.PAGE_END);
:
Eine einfache Lösung, die das Grundkonzept der Verwendung ein BorderLayout
zu verstehen ist, zu verwenden.
Lesen Sie das Swing-Tutorial auf Layout Managers für weitere Informationen und Beispiele. Laden Sie den Demo-Code herunter und ändern Sie den Code, um den Swing-Konventionen zu folgen.
Sie müssen zum Beispiel Komponenten zum Rahmen hinzufügen, BEVOR Sie den Rahmen sichtbar machen. So sollte die Reihenfolge des Codes sein:
frame.add(...);
frame.add(...);
frame.pack();
frame.setVisible(true);
Welche UI-Bibliothek, die Sie denken, ist besser? – dios231
@ dios231: Außerhalb des Kontexts ist es schwer zu sagen; Ich bevorzuge fast immer einen verfügbaren Java-Geschmack (2D, AWT, SWT, Swing, FX) für plattformübergreifende Bequemlichkeit. – trashgod