Scratch Geschrieben 6. Februar 2004 Geschrieben 6. Februar 2004 Hi, ich hab nen JFrame mit ner JMenuBar und wenn ich jetzt die Methode paint hinzufüge verschwindet die JMenuBar wie kann ich das verhindern damit ich die Zeichenfläche und die JMenuBar habe ???? Gruß Scratch Zitieren
Morbid_Soul Geschrieben 6. Februar 2004 Geschrieben 6. Februar 2004 Moin, reicht es wenn du in paint super(g); aufrufst? Ansonsten könntest du ja ein gesonderes Panel auf ne Frame legen und dessen Paint - Methode überschreiben, damit sich das nicht ins Gehege kommt. Geht das? gruß, Peter Zitieren
Scratch Geschrieben 6. Februar 2004 Autor Geschrieben 6. Februar 2004 werd ich mal probieren ! wird aber etwas dauern :-) mache noch nicht lange Java und werd deshalb viel probieren müssen. ich hab aber jetzt einfach mal neue Klasse angelegt mit extends JPanel und probier mal was ich damit anfangen kann ! Danköööö für den Tipp :-) !!! Zitieren
Morbid_Soul Geschrieben 6. Februar 2004 Geschrieben 6. Februar 2004 Moin, lass dir Zeit! ;-) Also, mit super() rufst du innerhalb einer Klasse immer etwas aus der Basisklasse auf, jenachdem wo und in welchem Zusammenhang du es schreibst. In deinem Fall (paint-Methode überschrieben) würdest du also die Paint-Methode von JFrame aufrufen und danach könntest du weitere Sachen hinzuzeichnen. Oft sieht man auch, dass innerhalb eines Konstruktors super() aufgerufen wird, einfach um somit den Konstruktor der Basisklasse aufzurufen. Das mit dem JPanel war nur so ne Idee. Das Panel kannst Du auf das ContentPane des Frames klatschen und kannst dann die Paint-Methode des Panels überschreiben, wodurch halt die Paint-Methode vom Frame nicht direkt verändert wird und der MenuBar erhalten bleibt. Gruß, Peter (Der nie weiß ob er überhaupt was richtiges erzält ) Zitieren
Scratch Geschrieben 6. Februar 2004 Autor Geschrieben 6. Februar 2004 also ich hab jetzt einfach ein JPanel angelegt und übergebe dem die sachen die es malen soll ;-) ich hab eigentlich nur noch Probleme mit dem anpassen der Fenstergröße des Frames .... die Funktion Image.getWidth(this) und Image.getHeight(this) liefern nachdem das Bild mit map = Toolkit.getDefaultToolkit().getImage(myImage); geladen wurde beide -1 statt de eigentlich größe, erst beim zweiten Klick auf meinen Button erkennt der die größe des Bildes :-( Zitieren
Morbid_Soul Geschrieben 6. Februar 2004 Geschrieben 6. Februar 2004 Aha, was wird den für ein Code ausgeführt wenn du auf den Button drückst? Zitieren
Scratch Geschrieben 6. Februar 2004 Autor Geschrieben 6. Februar 2004 Bei Klick auf den Button --> paintPanel.setBackgroundImage(image); System.out.println(paintPanel.getPaintAreaWidth()); // Beim ersten mal -1 System.out.println(paintPanel.getPaintAreaHeight()); // Beim ersten mal -1 setSize(paintPanel.getPaintAreaWidth(),paintPanel.getPaintAreaHeight()); // PaintPanel.class public void setBackgroundImage(String image) { map = Toolkit.getDefaultToolkit().getImage(image); repaint(); mapWidth = map.getWidth(this); mapHeight = map.getHeight(this); } als Ergebnis wie schon erwähnt Klick 1: -1 -1 Klick 2: 300 200 Zitieren
Morbid_Soul Geschrieben 6. Februar 2004 Geschrieben 6. Februar 2004 Mhh, ich sehe so nix. "getPaintAreaWidth" ist eine von Dir geschriebene Methode? Vielleicht gibt sie falsch initialiserte Werte zurück? Klappt das Zeichnen denn an sich? Zitieren
Scratch Geschrieben 6. Februar 2004 Autor Geschrieben 6. Februar 2004 Ja das Bild kommt. public int getPaintAreaWidth() { return image.getWidth(); } das sollte richtig sein. aber ich glaub ich hab was gefunden ... in den google.de Newsgroups !! Images take some time to load. They load in another thread and the main thread continues. So, when you try to get info. about the image the first time, the image is not ready so you do not get the information. To get around this, you can use a MediaTracker object to track the image and tell you when it is loaded. Jetzt hab ichs abgeändert zu public void setBackgroundImage(String image) { MediaTracker tracker = new MediaTracker(this); map = Toolkit.getDefaultToolkit().getImage(image); tracker.addImage(map,0); try { tracker.waitForID(0); } catch (Exception e){} mapWidth = map.getWidth(this); mapHeight = map.getHeight(this); } und es geht ... jetzt fehlt nur noch das er das Bild gleich aktualisiert !!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.