Hallo zusammen,
ich bin seit ein paar Wochen neu aus der PHP/HTML Welt in die JAVA-Welt gekommen und stand vor einigen Problemen, die ich u.a. mit Hilfe dieses Forums schon behoben habe....
nun komme ich einfach nicht weiter, obwohl ich mir sicher bin, dass es ein komplett einfacher Anfängerfehler ist....
Vielleicht kann man mir ja hier helfen?
Danke mal im Voraus!!!
So zum Problem:
Ich habe eine Klasse WaWi.java:
In mein JFrame will ich eine JMenuBar einbinden.
Dies mache ich in der Klasse menuGUI.java:
die beiden Codeschnipsel sind natürlich stark verkürzt ;-) und so weit funktioniert auch alles einwandfrei.
Nur ist meine Frage, warum muss ich bei jeder "Action" im Menü das JFrame wieder auf visible setzen??
Artikelliste.show(fenster);
fenster.getContentPane().repaint();
fenster.setVisible(true);
was mich jetzt aber komplett verwundert:
Artikelliste.show(fenster);
ArtikellisteGUI Artikelliste = new ArtikellisteGUI();
in dieser Klasse:
Hier stelle ich einen JTree dar, das funktioniert so weit auch.
Nun will ich bei dem Klick auf einen Knoten die Funktion showArtikel aufrufen.
Das funktioniert auch und ich bekomme auch die Ausgabe in der Konsole.
will ich in der Funktion allerdings etwas zum contentframe dazufügen, so passiert gar nichts!
Das einzige was sich machen lässt ist die Hintergrundfarbe des contentframe zu ändern....
hier suche ich seit Tagen nach meinem Fehler und komme nicht weiter, HILFE ;-)
Danke schonmal!!!!!
ich bin seit ein paar Wochen neu aus der PHP/HTML Welt in die JAVA-Welt gekommen und stand vor einigen Problemen, die ich u.a. mit Hilfe dieses Forums schon behoben habe....
nun komme ich einfach nicht weiter, obwohl ich mir sicher bin, dass es ein komplett einfacher Anfängerfehler ist....
Vielleicht kann man mir ja hier helfen?
Danke mal im Voraus!!!
So zum Problem:
Ich habe eine Klasse WaWi.java:
Java:
package wawi;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class WaWi {
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
//DB Verbindung
MSSQL MSdb = MSSQL.getInstance();
MYSQL MYdb = MYSQL.getInstance();
final JFrame fenster = new JFrame();
final User wawiuser = User.getInstance();
//wawiuser.login(fenster);
fenster.setDefaultCloseOperation(fenster.DO_NOTHING_ON_CLOSE);
fenster.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
wawiuser.logout(fenster);
}
});
fenster.setSize(800,600);
//MenuBar
MenuGUI WaWiMenu = new MenuGUI();
WaWiMenu.getMenu(fenster);
fenster.setVisible(true);
}
}
In mein JFrame will ich eine JMenuBar einbinden.
Dies mache ich in der Klasse menuGUI.java:
Java:
package wawi;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class MenuGUI {
public void getMenu (final JFrame fenster){
final User wawiuser = User.getInstance();
//???? Panel im Panel ausrichten Größe????
final JPanel contentFrame = new JPanel();
contentFrame.setBackground(Color.yellow);
contentFrame.setLayout(new BorderLayout());
fenster.setContentPane(contentFrame);
//Build the first menu.
JMenu menu = new JMenu("WaWi");
menu.setMnemonic(KeyEvent.VK_W);
menu.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items");
//Build the first menu.
JMenu menuArtikel = new JMenu("Artikel");
menuArtikel.setMnemonic(KeyEvent.VK_B);
menuArtikel.getAccessibleContext().setAccessibleDescription("The only menu in this program that has menu items");
//a group of JMenuItems
JMenuItem menuArtikelArtikelliste = new JMenuItem("Artikelliste",KeyEvent.VK_A);
menuArtikelArtikelliste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
menuArtikelArtikelliste.getAccessibleContext().setAccessibleDescription("Zeigt alle Artikel");
menuArtikelArtikelliste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ArtikellisteGUI Artikelliste = new ArtikellisteGUI();
fenster.getContentPane().removeAll();
Artikelliste.show(fenster);
fenster.getContentPane().repaint();
fenster.setVisible(true);
}
});
menuArtikel.add(menuArtikelArtikelliste);
JMenuBar menubar = new JMenuBar();
menubar.add(menu);
menubar.add(menuArtikel);
fenster.setJMenuBar(menubar);
}
}
die beiden Codeschnipsel sind natürlich stark verkürzt ;-) und so weit funktioniert auch alles einwandfrei.
Nur ist meine Frage, warum muss ich bei jeder "Action" im Menü das JFrame wieder auf visible setzen??
Artikelliste.show(fenster);
fenster.getContentPane().repaint();
fenster.setVisible(true);
was mich jetzt aber komplett verwundert:
Artikelliste.show(fenster);
ArtikellisteGUI Artikelliste = new ArtikellisteGUI();
in dieser Klasse:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package wawi;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.DefaultMutableTreeNode;
/**
*
* @author basti
*/
public class ArtikellisteGUI extends KategorieJTree {
JLabel label = new JLabel(" ");
JPanel artikelcontent = new JPanel();
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode selectedTreeNode = (DefaultMutableTreeNode) e.getPath().getLastPathComponent();
TreeObject userObject = (TreeObject) selectedTreeNode.getUserObject();
System.out.println(e.getPath() + "\nNode ID:" + userObject.getId());
artikelcontent.removeAll();
showArtikel(userObject.getId(), artikelcontent);
}
private void showArtikel (int catID, JPanel targetframe){
System.out.println("zeige Artikelliste: catid" + catID);
JPanel test = new JPanel();
test.setBackground(Color.green);
targetframe.add(test);
//targetframe.setBackground(Color.LIGHT_GRAY);
}
public void show(JFrame fenster){
Container contentframe = fenster.getContentPane();
JTree KatListe = this.getTree();
KatListe.setRootVisible(true);
JScrollPane treeView = new JScrollPane(KatListe);
contentframe.add(treeView, BorderLayout.WEST);
artikelcontent.setBackground(Color.yellow);
contentframe.add(artikelcontent, BorderLayout.CENTER);
System.out.println("show LISTE!!!");
}
}
Hier stelle ich einen JTree dar, das funktioniert so weit auch.
Nun will ich bei dem Klick auf einen Knoten die Funktion showArtikel aufrufen.
Das funktioniert auch und ich bekomme auch die Ausgabe in der Konsole.
will ich in der Funktion allerdings etwas zum contentframe dazufügen, so passiert gar nichts!
Das einzige was sich machen lässt ist die Hintergrundfarbe des contentframe zu ändern....
hier suche ich seit Tagen nach meinem Fehler und komme nicht weiter, HILFE ;-)
Danke schonmal!!!!!