Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi
Ich habe ein Panel mit Buttons, und damit verbundene ActionListeners .
Ich möchte dass wenn ich auf einen Button klicke ein neues Frame geöffnet wird.
aber mir fehlen diese zwei Wörter die sagen das ein neues Fenster geöffnet werden soll
z.B. wie setText oder setBackground
nur das eben nicht der Text oder der Hintergrund sonder ein neues Fenster geöffnet werden soll.
Danke schon mal für alle Tipps
Es wird eine Instanz der Klasse JFrame erzeugt und in der Variable jf gespeichert. Dem Konstruktor übergibt man den Titel des Fenster, oder setzt ihn später mit setTitle(String s);. Diese Instanz kann man dann auf dem Bildschirm sichtbar machen, set Visible(true);.
ah, lol, ich hab da was bei der Konversation missverstanden... heute bin ich irgendwie bisserl begriffsstutzig, schon der zweite Thread in dem ich irgendwas hinquatsche und dann hintendrein merke, dass ich was nicht genau gelsesen hab.. besser ich halt die Klappe für heute
Du schreibst dort das rein, was der Konstruktor von BAction erwartet.
Wenn der Konstruktor z.B. so aussieht:
Code:
public BAction( JFrame frame, boolean xyz ){...}
... würdest du z.B. schreiben:
Code:
BAction action = new BAction( b1Frame, true );
(wenn der Konstruktor auch gleich noch seine Eingaben in Instanzvariablen speichert, besitzt die Action das Frame, und kann es jederzeit sichtbar machen).
okay danke aber ich weiß gar nicht was das boolean heißt, das kann ich ja nicht einfach so abschreiben oder?
was bedeutet denn das boolean und was is des überhaupt?
aber ansonsten hab ichs verstanden also trotzdem schon mal danke
das war doch nur ein Beispiel, wie die Klasse BAction aufgebaut ist, welche Parameter deren Konstukor hat usw.,
das weiß doch niemand außer dir, das musst du dir selber überlegen
der Thread ist schon so lange und man weiß immer noch nicht was du wirklich haben willst, wo dein Problem liegt,
wenn auf Knopfdruck irgendein JFrame anzuzeigen ist, dann ist das schon ne recht komplexe Sache,
da braucht es ja erstmal ein JFrame in dem der Button angezeigt wird,
dieser muss einen ActionListener haben der auf das andere JFrame verweist und dort wird setVisible aufgerufen,
für ein Beispiel mit drei Buttons für 3 JFrames siehe hier, vielleicht erkennst du daran was dir fehlt
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame {
public Main() {
JPanel p = new JPanel();
for (int i=0; i<3; i++) {
// mehrere Buttons laden
p.add(getButton(""+i));
}
getContentPane().add(p, BorderLayout.CENTER);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400, 150);
setVisible(true);
}
// erzeugt einen Button und ein zugehöriges Frame
private JButton getButton(String name) {
JFrame f = new JFrame("Frame "+name);
f.setSize(new Dimension(200,100));
f.setLocation(200+(int) (Math.random()*200),200+(int) (Math.random()*200));
JButton b = new JButton("Button "+name);
b.addActionListener(new B1Action(f));
return b;
}
class B1Action implements ActionListener {
private JFrame f;
private boolean show;
B1Action(JFrame newF) {
f = newF;
}
public void actionPerformed(ActionEvent e) {
show = !show; // Wechsel zwischen anzeigen und nicht anzeigen
f.setVisible(show);
}
}
public static void main(String[] args) {
new Main();
}
}