I don't know about a book. But what helped me was just playing with the various layouts and components. Components act differently in different layouts. You need to get a good understanding of what happens with each.
For instance, on your button question. Try making a panel with vertical BoxLayout. They won't all be the same size. Or use FlowLayout. What happens to the component when in the various locations in BorderLayout.
Create a simple
test client and play with the various layouts.