Social Icons

Thursday, May 13, 2010

How to create a tabbed window – Swing


This basic tutorial demonstrates how to create tabs in a java GUI window . Let’s assume that we are going to create a Crypto tool, which can encrypt some data and also decrypt  some encrypted data into some readable format. But of course I have no intention to discuss how to encrypt/decrypt data here. For the user friendliness of our GUI it is better to separately display these two tasks in it. hence we will have a Encryption tab and a decryption tab and so on.

This is the preview of the tabbed window. I added only a single button to keep the code short and concise.

Untitled

The GUI has just two tabs. every tab has a title , an icon (optional) and a component ( the component to be displayed when the tab is clicked). this component is most probably a JPanel which contains all the other components (buttons , labels …etc). and optionally , a tooltip can also be added . the source code for  creating tabbed window is given below.

package hasijournal.tabbeddemo;
import javax.swing.*;
import java.awt.*;
class Crypto extends JFrame {
    public Crypto() {
        setTitle("Crypto Tool");
        JTabbedPane jtp = new JTabbedPane();
        // get the container
        getContentPane().add(jtp);
        // create tab components
        JPanel jp1 = new JPanel();
        JPanel jp2 = new JPanel();
        jp1.setLayout(new BorderLayout());
        jp2.setLayout(new BorderLayout());
        
        JButton ebtn = new JButton("Encrypt data");
        jp1.add(ebtn, BorderLayout.SOUTH);
        JButton dbtn = new JButton("Decrypt data");
        jp2.add(dbtn, BorderLayout.SOUTH);
        
        // add icons
        Icon it1= new ImageIcon("enc.png");
        Icon it2= new ImageIcon("dec.png");
        
        /*--- Overloaded addTab methods in JTabbePane class---*/
        //  void addTab(String title, Component component)
        /*  Adds a component represented by a title and no icon. */
        // void addTab(String title, Icon icon, Component component)          
        /* Adds a component represented by a title and/or icon,*/
        
        // void addTab(String title, Icon icon, Component component, String tip)
        /* Adds a component and tip represented by a title and/or icon */
        jtp.addTab("Encrypt",it1,jp1,"Encrypts data");
        jtp.addTab("Decrypt",it2,jp2,"Decrypts data");
        
        
    }
    public static void main(String[] args)  {
        Crypto tp = new Crypto();
        tp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        tp.setBounds(100,100, 300, 300);
        try{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }catch(Exception e){}
        SwingUtilities.updateComponentTreeUI(tp);
        
        tp.setVisible(true);
    }
}


 
 
 
Blogger Templates http://slots.to/