Hallo,
ich habe ein Problem.
Folgender code ist vorgegeben:
Code:
import javax.swing.*;
import java.awt.Container;
public class MyJFrame
{
/**
* @param args the command line arguments
*/
public static void main (String args[])
{
JFrame f = new JFrame ("MyJFrame");
// Mit getContentPane() erhält man die Referenz auf die Content Pane.
Container contentPane = f.getContentPane();
// Erzeugen des JButtons
JButton button = new JButton ("Drück mich");
// Hinzufügen des Buttons zum JFrame bzw. zum Container
contentPane.add (button);
// Größe des JFrame. Breite 250 Pixel, Höhe 100 Pixel
f.setSize (250,100);
//Position setzen
f.setLocation( 100,100);
//bei Klick aufs Kreuz wird das Fenster geschlossen und das Objekt entfernt
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
// JFrame anzeigen
f.setVisible( true);
}
}
Meine Aufgabe (im Studium) lautet nun:
statt einem sollen zwei Knoepfe enthalten sein, einer mit der Aufschrift "Drueck" und einer mit der Aufschrift "mich".
Wie mache ich das? Wenn ich einen weiteren Button erstelle, zeigt er mir immer nur den letzterstellten an.
Kann mir da jemand helfen?
MfG
Simon
contentPane hat ein spezielles Layout, BorderLayout, welches nicht so gut mit mehreren Komponenten klar kommt,
eine recht einfache Lösung ist,
erstmal ein neues JPanel zu erstellen, das hat standardmßig FlowLayout, dort passt viel rein,
dann dieses nur eine JPanel ins JFrame, also dessen contentPane einfügen
ansonsten könntest du auch contentPane auf JPanel casten und dort das Layout wechseln
oder beim BorderLayout bleiben und mit
add(a,BorderLayout.NORTH);
add(b,BorderLayout.CENTER);
zwei Komponenten einfügen
Vielen Dank für die schnelle Antwort, aber ich bin Anfänger und kann mit deinen Äußerungen nicht viel anfangen.
Die letzte Lösung scheint mir die einfachste zu sein.
Wie füge ich denn diese zwei Komponenten genau ein? Muss ich den ersten Button dann auch verändern?
du hast
contentPane.add (button);
und jetzt schau dir nochmal meine beiden Befehle an, um den Unterschied zu erkennen
(an welchem Objekt das add ausführt wird hatte ich weggelassen)
> Muss ich den ersten Button dann auch verändern?
dessen add() ja, den Button an sich nicht unbedingt hinsichtlich des Layouts,
für die Aufgabe insgesamt aber schon
sorry,
aber ich kriege es einfach nicht hin.
Wärst du evtl. so nett mir zu sagen, was ich genau verändern muss? Du meinst doch, dass ich add(a,BorderLayout.NORTH); hinter content.Pane. hänge, oder?
was willst du da überhaupt verändern? du hast doch nur einen Button, der wird doch korrekt angezeigt oder nicht?
die zwei Buttons werde ich nicht für dich programmieren
und wenn irgendwas bei dir nicht funktioniert, dann musst du schon den Code und die Fehlermeldung posten
Beim Hinzufügen der Buttons selbst gibts du noch die Position an. Dies tust du im BorderLayout mit BorderLayout.NORTH etc. Hast du das jetzt so gemacht?
Also 1. zwei Buttons bspw. button1 und button2 erstellen (bzw. einen wieteren) und diesen dann 2. auch zum contentPane hinzufügen und 3. dabei die Position angeben.
Wenn du das gemacht hast, kannst du ja nochmal Code posten.