0

I have 8 tabs in my Java pane and I need each one to have an exit button that will close that tab not the whole program. I can get the button on one tab only and have not figured out how to make it work yet. Here is my code so far:

import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;

public class JavaTabs extends JFrame {

    public JavaTabs() {
        super( "Course Project " );

        JTabbedPane tab = new JTabbedPane();
        // constructing the first panel
        JLabel l1 = new JLabel( " ", SwingConstants.CENTER );
        JPanel p1 = new JPanel();
        p1.setBackground( Color.lightGray );
        p1.add( l1 );
        tab.addTab( "General", null, p1, " Panel #1" );
        JButton exit = new JButton("Exit");

        // constructing the second panel
        JLabel l2 = new JLabel("Change Company Name", SwingConstants.CENTER);
        JPanel p2 = new JPanel();
        p2.setBackground( Color.lightGray );
        p2.add( l2 );
        tab.addTab( "Options", null, p2, " Panel #2" );

        // constructing the third panel
        JLabel l3 = new JLabel( " " );
        JPanel p3 = new JPanel();
        p3.setBackground( Color.lightGray );
        tab.addTab( "Customers", null, p3, " Panel #3" );

        // constructing the fourth panel
        JLabel l4 = new JLabel( " " );
        JPanel p4 = new JPanel();
        p4.setBackground( Color.lightGray );
        p4.add( l4 );
        tab.addTab( "Contractors", null, p4, " Panel #4" );

        // constructing the fifth panel
        JLabel l5 = new JLabel( " " );
        JPanel p5 = new JPanel();
        p5.setBackground( Color.lightGray );
        p5.add( l5 );
        tab.addTab( "Pools", null, p5, " Panel #5" );

        // constructing the sixth panel
        JLabel l6 = new JLabel(" ");
        JPanel p6 = new JPanel();
        p6.setBackground( Color.lightGray );
        p6.add(l6);
        tab.addTab("Hot Tubs", null, p6, "Panel #6" );

        // constructing the seventh panel
        JLabel l7 = new JLabel("  ");
        JPanel p7 = new JPanel();
        p7.setBackground( Color.lightGray );
        p7.add(l7);
        tab.addTab("Temp Calc", null, p7, "Panel #7" );

        // constructing the eighth panel
        JLabel l8 = new JLabel(" ");
        JPanel p8 = new JPanel();
        p8.setBackground( Color.lightGray );
        p8.add(l8);
        tab.addTab("Length Calc",  null, p8, "Panel #8" );

        JButton test = new JButton("Exit"); 
        p1.add(test);

        // add JTabbedPane to container
        getContentPane().add( tab );

        setSize( 350, 300 );
        setLocation(300, 250);
        setVisible( true );
    }

    public static void main( String args[] ) {
        {
            JavaTabs tabs = new JavaTabs();
            tabs.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        }
    }
}
nIcE cOw
  • 24,468
  • 7
  • 50
  • 143
  • 1
    Please edit your code so that it is well formatted including the sensible use of consistent indentations. The easier it is to read your code the easier it is to understand it and your problem. – Hovercraft Full Of Eels Aug 24 '13 at 20:32
  • 2
    Check out [Oracle's tutorial on tabbed panes](http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html). – FThompson Aug 24 '13 at 20:38
  • 1
    [`TabComponentsDemo`](http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html#eg): "Demonstrates custom components on tabs. Uses a tabbed pane with close buttons." – trashgod Aug 24 '13 at 21:01
  • Check out [this example](http://stackoverflow.com/questions/11553112/how-to-add-close-button-to-a-jtabbedpane-tab/11553266#11553266) – MadProgrammer Aug 24 '13 at 21:42

1 Answers1

-1

you can add a listener to the button,and use this:

tab.setEnabledAt(int index, boolean b);

oliver
  • 63
  • 2
  • 9