2016-05-06 7 views
0

Also das Programm zeichnet ein Auto und ich werde drei Tasten machen, eine für Blitz, um die blinkende Fähigkeit zu initialisieren, eine links, um das Auto ein Feld nach links und ein Recht zu bewegen, um das Auto ein Leerzeichen zu bewegen das Recht. Meine Frage ist, wie kann ich jedes Mal, wenn ich den Knopf drücke, die Farbe ändern? Um es zusammenzufassen: Ich weiß nicht, wie ein Objekt die Farbe jedes Mal ändern kann, wenn die Taste gedrückt wird, während das Blinken eingeschaltet ist. Ich nehme an, ich benutze Farbe()Wie ändere ich die Farbe eines gezeichneten Objekts nach dem Drücken einer JButton?

Jede Hilfe wäre willkommen.

Antwort

0

Wenn Sie ein Bild zeichnen, müssen Sie eine andere Bilddatei mit einer anderen Farbe laden und dieses Bild stattdessen zeichnen. Sie tun dies innerhalb der Methode, die Sie gerade verwenden, um das Auto zu zeichnen.

Wenn Sie eine Form oder einen Text einer Art zeichnen, können Sie g.setColor() auf dem Grafikobjekt aufrufen, das an die Methode paint() oder paintComponent() übergeben wird, bevor Sie die Form zeichnen.

0

Es gibt eine Reihe von Möglichkeiten, dies zu tun. Die Grundvoraussetzung ist jedoch, eine Art von Object zu haben, die Ihnen sagen kann, wann sie die Farbe ändern sollte, dann würde sie die entsprechende Aktion unternehmen und die Benutzeroberfläche entsprechend aktualisieren.

könnte Sie ...

Verwenden Sie eine einfache JPanel als die Darstellung des Objekts und einfach es ist rufen setBackground Farbe Methode, wenn Sie es wollen, Farbe ändern.

Dies setzt voraus, dass Sie ein LayoutManager verwenden möchten, um das Panel zu positionieren. Während es sicherlich machbar ist, wird es

könnte Sie ...

Verwenden Sie ein JPanel einige Gedanken in das Gesamtdesign erfordern und außer Kraft setzen, es ist paintComponent Methode und malen es die Farbe zu ändern. Auf der einfachsten Ebene ist das Overkill, aber wenn Sie auch ein "Auto" oder ein Bild von "Auto" zeichnen möchten, wird dies ein wenig sinnvoller, besonders wenn Sie das Auto basierend auf der Richtung, in der es sich bewegt, drehen möchten

Siehe Painting in AWT and Swing, Performing Custom Painting und 2D Graphics für mehr Details

Flashing

ich nehme an, Sie meinen Sie das Objekt soll in irgendeiner Weise und „blink“ ein- und ausgeschaltet animiert werden.

Dies kann einfach durch die Verwendung eines Swing Timer erreicht werden, mit dem der Status eines einfachen Flags geändert werden kann, das die Art und Weise ändert, in der die Komponente gerendert wird.

Siehe How to use Swing Timers für weitere Details

Das wichtige Konzept wegzunehmen daraus ein Objekt zu erstellen, die die Anforderungen in weg kapselt die für Sie ist leicht zu benutzen, so dass, wenn Sie ermöglichen beispielsweise blinken, alles, was Sie Rufen Sie die setFlashing(boolean) Methode und das Objekt kümmert sich um den Rest

+0

Würde jemand den Grund für den Downvote markieren? Wie beantwortet er die Fragen des OP nicht? Wie kann es verbessert werden? – MadProgrammer