How to control layout for multiple toolbars?
Hi,
I'm trying to add a second toolbar to an existing app. The app frame is in BorderLayout. I think a panel with FlowLayout suffices for the arrangement of the toolbars, but I don't get the expected behavior:
I would like both toolbars arranged next each other horizontally if the app frame is wide enough.
If the frame is resized (smaller), I would like the second toolbar wrap around into a second 'line' and the containing (FlowLayout) panel be increased in height.
What's going wrong is that the toolbars panel does not get higher so the second toolbar is not visible if it has wrapped around.
I created an empty sample showing the problem:
Code:
package swingtest;
public class mainform extends javax.swing.JFrame
{
public mainform()
{
initComponents();
}
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents()
{
jPanel1 = new javax.swing.JPanel();
jToolBar1 = new javax.swing.JToolBar();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jToggleButton2 = new javax.swing.JToggleButton();
jToolBar2 = new javax.swing.JToolBar();
jButton3 = new javax.swing.JButton();
jToggleButton1 = new javax.swing.JToggleButton();
jSplitPane1 = new javax.swing.JSplitPane();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addComponentListener(new java.awt.event.ComponentAdapter()
{
public void componentResized(java.awt.event.ComponentEvent evt)
{
frameResized(evt);
}
});
jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 1, 1));
jButton1.setText("jButton1");
jToolBar1.add(jButton1);
jButton2.setText("jButton2");
jToolBar1.add(jButton2);
jToggleButton2.setText("jToggleButton2");
jToolBar1.add(jToggleButton2);
jPanel1.add(jToolBar1);
jButton3.setText("jButton3");
jToolBar2.add(jButton3);
jToggleButton1.setText("jToggleButton1");
jToolBar2.add(jToggleButton1);
jPanel1.add(jToolBar2);
getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
jSplitPane1.setDividerLocation(200);
getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
private void frameResized(java.awt.event.ComponentEvent evt)//GEN-FIRST:event_frameResized
{//GEN-HEADEREND:event_frameResized
validate();
}//GEN-LAST:event_frameResized
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new mainform().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JPanel jPanel1;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JToggleButton jToggleButton1;
private javax.swing.JToggleButton jToggleButton2;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JToolBar jToolBar2;
// End of variables declaration//GEN-END:variables
}
How can I tell jPanel1 to use more space if the toolbars have wrapped around?
Thanks,
Thomas