Any solutions?
As you have already stated, "I can simply make many buttons". This is probably the easiest solution (without knowing your exact requirment) and there is no reason you can't do this as you can always share an ActionListener between all buttons so you don't have to create multiple listeners.
Or for something completely different you can create a JTable to display your data in a grid. A JTable uses a renderer to paint buttons, so you just add the data to the TableModel. Read the section from the Swing tutorial on How to Use Tables for more information. But this brings in additional complexity in terms of handling the color and size.