Hallo zusammen, ich werkel momentan an einer kleinen App und es funktioniert alles soweit, nur habe ich da eine Frage die mich seit 2 Tagen verfolgt.
Und zwar habe ich zwei JFrame Klassen die mir 2 unterschiedliche Objekt Fenster für die App erzeugen, hier:
und hier:
Da ich ein Anfänger bin, habe ich sicherlich nicht den schönsten Code, bitte etwas Nachsicht. Meine Frage lautet jetzt wie folgt: Jedesmal wenn ich zwischen den Fenstern durch den JButton wechsel, erstellt mein Programm ein neues Objekt, ich würde aber gerne mit dem Objekt aus der main methode arbeiten. Also das Objekt aus der main sichtbar machen und unsichtbar machen bei bedarf und nicht immer ein neues erzeugen, falls das irgendwie Sinn ergibt. Momentan ist es ja so, dass die Objekte unnötigerweise im Hintergrund weiter laufen und das kommt mir irgendwie falsch vor.
Ich könnte das Obejkt in der Klasse als statisch erzeugen, aber das möchte ich auch nicht, weil das main Objekt ja trotzdem noch unsichtbar in der Luft hängen würde.
Bevor sich hier jemand aufregt, dass ich zuerst die Grundlagen lernen solle, möchte ich kurz erwähnen, dass mir durchaus bewusst ist, wie man auf Objekte zwischen Klassen zugreifen kann, indem man sie dort instanziert. Ich weiß auch, dass ich mehr mit private arbeiten sollte, anstatt alles public zu machen, aber das ganze mache ich aus Spaß und zur Übung, deshalb wollte ich vorerst alles public machen.
Ich hoffe die Experten unter euch konnten meine Frage einigermaßen verstehen. Danke aufjedenfall schon mal im Voraus
PS: Falls jemand Tipps für mich hat was die Struktur des Codes angeht usw. bin offen dafür und auch sehr dankbar !
Und zwar habe ich zwei JFrame Klassen die mir 2 unterschiedliche Objekt Fenster für die App erzeugen, hier:
Java:
public class Fenster extends JFrame implements ActionListener {
JButton b1, b2;
JTextField t1;
JPanel p1, p2;
Fenster fenstor;
public Fenster() {
setSize(500, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Meine Bibliothek");
setResizable(false);
b1 = new JButton("Buch hinzufügen");
b2 = new JButton("Bibliothek");
b1.setPreferredSize(new Dimension(150, 50));
b2.setPreferredSize(new Dimension(305, 50));
b1.addActionListener(this);
b1.setActionCommand("button1");
b2.addActionListener(this);
b2.setActionCommand("button2");
t1 = new JTextField("Buch!");
t1.setPreferredSize(new Dimension(150, 50));
Font font = new Font("Verdana", Font.HANGING_BASELINE, 20);
t1.setFont(font);
p1 = new JPanel();
p2 = new JPanel();
p1.add(b1);
p1.add(t1);
p2.add(b2);
add(p1, BorderLayout.WEST);
add(p2, BorderLayout.SOUTH);
pack();
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand() == "button2") {
// ausführung für button 2
this.setVisible(false);
Bibliotheksfenster bf = new Bibliotheksfenster();
}
if (e.getActionCommand() == "button1") {
// asusführung für button 1
}
}
public void visibleFenster() {
setVisible(true);
}
}
und hier:
Java:
public class Bibliotheksfenster extends JFrame implements ActionListener {
JButton b1;
JPanel p1;
public Bibliotheksfenster() {
super("Meine Bibliothek");
setSize(400, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
b1 = new JButton();
b1.addActionListener(this);
b1.setPreferredSize(new Dimension(100, 100));
p1 = new JPanel();
p1.add(b1);
add(p1, BorderLayout.SOUTH);
//pack(); später packen
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// neue frames werden erstellet anstatt im alten objekt zu arbeiten.
// System.out.println(mainfenster.toString());
// mainfenster.setVisible(true);
this.setVisible(false);
Fenster mainfenster = new Fenster();
// mainfenster.visibleFenster();
}
}
Java:
public class buchmain {
public static void main(String[] args) {
new Fenster();
Da ich ein Anfänger bin, habe ich sicherlich nicht den schönsten Code, bitte etwas Nachsicht. Meine Frage lautet jetzt wie folgt: Jedesmal wenn ich zwischen den Fenstern durch den JButton wechsel, erstellt mein Programm ein neues Objekt, ich würde aber gerne mit dem Objekt aus der main methode arbeiten. Also das Objekt aus der main sichtbar machen und unsichtbar machen bei bedarf und nicht immer ein neues erzeugen, falls das irgendwie Sinn ergibt. Momentan ist es ja so, dass die Objekte unnötigerweise im Hintergrund weiter laufen und das kommt mir irgendwie falsch vor.
Ich könnte das Obejkt in der Klasse als statisch erzeugen, aber das möchte ich auch nicht, weil das main Objekt ja trotzdem noch unsichtbar in der Luft hängen würde.
Bevor sich hier jemand aufregt, dass ich zuerst die Grundlagen lernen solle, möchte ich kurz erwähnen, dass mir durchaus bewusst ist, wie man auf Objekte zwischen Klassen zugreifen kann, indem man sie dort instanziert. Ich weiß auch, dass ich mehr mit private arbeiten sollte, anstatt alles public zu machen, aber das ganze mache ich aus Spaß und zur Übung, deshalb wollte ich vorerst alles public machen.
Ich hoffe die Experten unter euch konnten meine Frage einigermaßen verstehen. Danke aufjedenfall schon mal im Voraus
PS: Falls jemand Tipps für mich hat was die Struktur des Codes angeht usw. bin offen dafür und auch sehr dankbar !
Zuletzt bearbeitet: