This is an old revision of the document!


JFrame
Theme

In main(), set the theme before opening your form:

public class frmMain extends javax.swing.JFrame 
{
    //...
 
    public static void main(String args[]) 
    {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                //if ("CDE/Motif".equals(info.getName())) {
                //if ("Metal".equals(info.getName())) {
                //if ("Nimbus".equals(info.getName())) {
                //if ("Windows Classic".equals(info.getName())) {
                if ("Windows".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(frmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(frmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(frmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(frmMain.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
 
 
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new frmMain().setVisible(true);
            }
        });
    }
}    

References:

Layout Managers

Java Swing uses Layout Managers to manage the size and postion of visual components. This is the official java tutorial on how to use this Layout managers:

http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html

And there is a brief description of the most common layout managers

FlowLayout (default): it disposes the components left to right and up to down.

BorderLayout: it divides the container in NORTH, SOUTH, WEST, EAST center CENTER. Only one component by position. Components on border expands and the center component uses the space avaiable

GridLayout: you initialice the manager indicating how many rows and cols the grid is going to have. Each cell has same size and you start adding component on the top left cell.

GridBagLayout: the MOST fine grained layout manager, you can do anything with this, but is a bit complicated, see the java documentation for it.

NullLayout (when you nullify the container's layout manayer): no layout manager, components uses the location and size properties to show on components.

And of course, containers inside in other containers can use a different layout manager than their parent. Combining layout managers is a difficult art to learn.

References: https://stackoverflow.com/questions/1496858/anchoring-and-docking-controls-in-java-swing