简体   繁体   中英

How do I put an exit button in every tab of a multi tabbed pane that will close each one individually

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 );
        }
    }
}

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

tab.setEnabledAt(int index, boolean b);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM