Consider using a BorderLayout
instead...
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame mainFrame = new JFrame("Muney Manager");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Setting up panels:
JPanel mPanel = new JPanel();
mPanel.setLayout(new BorderLayout());
TablePanel tPanel = new TablePanel();
ToolBar buttonPanel = new ToolBar(tPanel);
mPanel.add(buttonPanel, BorderLayout.NORTH);
mPanel.add(tPanel);
//Setting up Panels and Frame to be displayed :3
mainFrame.getContentPane().add(mPanel);
mainFrame.pack();
mainFrame.setVisible(true);
}
});
}
Or if you want more control, maybe even a GridBagLayout
Updated
JPanel
by default uses a FlowLayout
, try changing the TablePanel
to use a BorderLayout
as well...
public TablePanel()
{
setLayout(new BorderLayout());
//Initializing tmodel and putting it into table
//It's needed for "adding rows" method
tmodel = new DefaultTableModel(data, columnNames);
table = new JTable();
table.setModel(tmodel);
//Setting up JScrollPane, table Headder
//and make scrollPane visible
table.setFillsViewportHeight(true);
add(new JScrollPane(table));
}