You have quite a few options, but overriding the LookAndFeel functions are what I do most (the last option below). Here are some possibilities:
Using PNGs (you can also use SVGs)
With Blueprint
An example just using what JUCE provides (LookAndFeel class)
2 Likes