Does its own drawing and input handling, subject to your modifications
You set attributes, like in JButton
You install listener/callbacks, like actionPerformed, adjustmentValueChanged
You provide callback for drawing: paintComponent()
You provide callback for raw input handling
Can also use JPanel for this
Useful for layout, coming next...