ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
600
600
EMPFEHLEN
-
Hallo,
ich habe folgendes Problem:
ich habe einen JFrame erstellt und diesem eine JMenuBar hinzugefügt mit entsprechenden Menüpunkten. Und jetzt möchte ich über einen von diesen Menüpunkten einen anderen JFrame als so ne Art "Über ..." Fenster aufrufen.
So sieht mein Code aus
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.BorderLayout; /** * @author * @version */ public class main { JFrame mainframe; JMenuBar mainmenu; JFrame aboutFrame; JLabel aboutLabel; JButton aboutCloseButton; // JMenu Elemente JMenu file; JMenu help; // Datei JMenuItem exit; // Hilfe JMenuItem about; JMenuItem helpF; public main() { new JMenuBarBeispiel(); new JAboutFrame(); } public class JMenuBarBeispiel implements ActionListener { public JMenuBarBeispiel() { // Erzeugt Hauptfenster mainframe = new JFrame("Architekt v1.00"); mainframe.setVisible(true); mainframe.setSize(500, 400); mainframe. setLocationRelativeTo(null); mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Erzeugt Menüleiste mainmenu = new JMenuBar(); // Erzeuge Menüelemente file = new JMenu("Datei"); help = new JMenu("Hilfe"); // Erzeuge Untermenüelemente exit = new JMenuItem("Beenden"); exit.addActionListener(this); about = new JMenuItem("Über"); about.addActionListener(this); helpF = new JMenuItem("Hilfe"); helpF.addActionListener(this); // Menüelemente hinzufügen mainmenu.add(file); mainmenu.add(help); // Untermenüelemente hinzufügen file.add(exit); help.add(about); help.add(helpF); // JMenuBar an Fenster binden mainframe.add(mainmenu, BorderLayout.NORTH); } public void actionPerformed(ActionEvent object) { if (object.getSource() == exit) { System.exit(0); } } } public class JAboutFrame implements ActionListener { public void JAboutFrame() { //Erzeuge Fenster aboutFrame = new JFrame("Architekt v1.00 - Über"); aboutLabel = new JLabel("Test"); aboutCloseButton = new JButton("Schließen"); aboutLabel.setVisible(false); aboutFrame.setVisible(false); aboutFrame.setSize(100, 75); aboutFrame.setLocationRelativeTo(null); aboutFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent object) { if (object.getSource() == about) { aboutFrame.setVisible(true); aboutFrame.setAlwaysOnTop(true); } } } }
Mein Problem jetzt, wenn ich den JFrame über den Menüpunkt "Über" aufrufen möchte erscheint der Frame einfach nicht. Ich weis einfach nicht weiter, hat einer von euch vielleicht einen Tipp für mich?
Vielen Dank schon mal im Vorraus
-
Hi,
benutze doch lieber ein JFrame und für die restlichen Fenster könntest du JDialog verwenden.
Gruß
G1n0
-
11.01.12 07:59 #3
Hi,
wie G1n0 0n3 schon sagte, ist es ratsam das Hauptfenster als JFrame zu machen und "Popup"-Fenster als Dialoge. Ledigliche Fenster, die "unabhängig" vom Hauptfenster sein sollen, ist es sinnvoll als JFrame zu machen.
Jetzt aber zu deinem Problem. In deiner inneren Klasse JMenuBarBeispiel, welche du von ActionListener implementieren lässt, erzeugst du das Menü richtig. Allerdings hast du vergessen deinen ActionListener so anzupassen, dass er auch auf all die Menüpunkte reagiert, die ihm zugewießen wurden.
Hier erzeugst du den Menüpunkt "Über" und weißt ihm den ActionListener deiner JMenuBarBeispiel zu.
Allerdings reagierst du in deinem ActionListener nicht auf dieses Event.Code java:1 2
about = new JMenuItem("Über"); about.addActionListener(this);
Du musst den Inhalt des ActionListeners von deiner inneren Klasse JAboutFrame noch mit zu dem ActionListener von JMenuBarBeispiel hinzufügen.Code java:1 2 3 4 5
public void actionPerformed(ActionEvent object) { if (object.getSource() == exit) { System.exit(0); } }
Code java:1 2 3 4 5 6
public void actionPerformed(ActionEvent object) { if (object.getSource() == about) { aboutFrame.setVisible(true); aboutFrame.setAlwaysOnTop(true); } }
Das würde dann so aussehen. (JMenuBarBeispiel)
Code java:1 2 3 4 5 6 7 8 9
public void actionPerformed(ActionEvent object) { if (object.getSource() == about) { // aboutFrame wird eine NullPointerException werfen, da das JFrame noch nicht initialisiert wurde aboutFrame.setVisible(true); aboutFrame.setAlwaysOnTop(true); } else if (object.getSource() == exit) { System.exit(0); } }
Gruß
FabioBitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
Ähnliche Themen
-
JFrame repaint durch anderen Thread blockiert
Von Fabiian im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 19.10.10, 23:45 -
JFrame- Methoden aus Main aufrufen
Von Andre_Java im Forum JavaAntworten: 3Letzter Beitrag: 18.12.07, 14:08 -
Aus einem JFrame anderes JFrame starten
Von maddos im Forum JavaAntworten: 3Letzter Beitrag: 09.08.07, 12:24 -
Ein JFrame aus einem anderem JFrame aufrufen!
Von Lautsprecher im Forum JavaAntworten: 1Letzter Beitrag: 14.11.05, 09:37 -
JFrame sperren oder neuen JFrame modal darstellen
Von Scrapy im Forum JavaAntworten: 2Letzter Beitrag: 07.09.05, 12:16





Zitieren
Login





