That's not the problem. "refresh" is called at the end of the initialization method. "update" can still be called, its merely calling the super's update method since Window_Credits does not override it.
The code you have should be working, are you changing the font?
Also, it may be a stupid question, but is your problem the scene does not change, or that you get a blank window with no text written in it? I'm not sure where you got the "text_width" idea, but many most times you don't need a dynamic measurement of text, you can simply hard-code numbers in there.
def refresh
self.contents.clear
self.contents.draw_text(0, 0, self.contents.width, 32, "Credits", 1)
end