2017-03-14 1 views
2

Ich versuche, ein Menü für mein Programm zu erstellen, die einige geometrische Objekte auf einem JPanel zieht mit .getGraphics(). DrawImage (..)JMenu verlässt ein graues Feld über einem JPanel, auf dem Bild gezeichnet wird

Das Problem, das ich habe, ist, dass, nachdem ich ein Element in diesem Menü ausgewählt habe, der Text verschwindet, aber die Hintergrundfarbe nicht. Die Auswahl stellt eine Methode zur Verfügung, die das Bild auf diesem Panel mit dem obigen Befehl neu zeichnet, aber offensichtlich nicht hilft, es zu entfernen.

Nachdem ich auf diesen Menüeintrag geklickt habe und dieses graue Feld hinter dem Menü steht, kann ich es verschwinden lassen, indem ich die Szene mit der Maus verschiebe. Das verwirrt mich, warum der Menüelementmethodenaufruf die Box nicht entfernt, aber der nächste Aufruf dieser Methode tut.

Irgendeine Idee warum das passiert und/oder wie man es repariert?

Vielen Dank.

Bild (A, B sind auf JMenus JMenuBar und das graue Feld unten nach JRadioButtonMenuItem Auswahl überlassen.): A, B are JMenus on JMenuBar and the gray box below is left after JRadioButtonMenuItem selection

+0

Meine Vermutung ist, dass Sie das Panel daran gehindert haben, neu zu zeichnen, wenn es erkennt, dass das Menü verschwunden ist. Aber ich kann es nicht sagen, ohne Code zu sehen. –

+0

Das einzige, was ich manuell im Panel eingestellt habe, ist setPreferredSize(). (Außerdem sind alle Komponenten in einem JFrame, wenn das einen Unterschied macht) – EyfI

Antwort

2

die einige geometrische Objekte auf einem JPanel zieht .getGraphics() verwendet drawImage (. .)

Verwenden Sie nicht getGraphics(), um benutzerdefinierte Malerei zu tun.

Benutzerdefinierte Bemalung erfolgt durch Überschreiben der paintComponent(...) Methode der JPanel. Und vergessen Sie nicht, super.paintComponent (...) als erste Anweisung aufzurufen.

Lesen Sie den Abschnitt aus dem Swing-Tutorial auf Custom Painting für weitere Informationen und Arbeitsbeispiele.

+0

Danke, das hat das Gray-Box-Problem gelöst. Jetzt, wenn das Bild neu gezeichnet wird, flackert es mit jedem Neuzeichnen, was könnte das verursachen? – EyfI

+0

@EyfI, wenn Sie mehr Probleme haben, dann stellen Sie eine andere Frage, die ein richtiges [MCVE] enthält, das das Problem demonstriert. Wahrscheinlichkeiten sind beim Erstellen des 'MCVE' Sie werden das Problem finden. Wiederum ist der Punkt des Tutorials für Sie, das Tutorial zu lesen und das Arbeitsbeispiel herunterzuladen, um die richtige Methode zum Codieren des benutzerdefinierten Gemäldes zu lernen. Stellen Sie sicher, dass Sie dem Code des Lernprogramms folgen. Es gibt auch eine Anleitung zum Thema "Wie man Menüs verwendet". – camickr

Verwandte Themen