我正在使用JTabbedPane进行项目

当我单击TAB2时,它将显示PANEL2。完成

PANEL 2包含一个JButton“下一个”,它将切换到PANEL 2.1,而将JButton“上一个”切换到

仍在TAB 2中时将其切换回PANEL 2。

那么,这是Tab2内的卡片布局吗?

感谢您的帮助!

-----------------------------
TAB 1  |  TAB 2 |  TAB 3 |
-----------------------------
                             -
                             -
          PANEL  2           -
                             -
                             -
                             -
                             -
      "Previous" "NEXT"      -
==========================   =

最佳答案

您只需要在选项卡中插入一个JPanel并将其布局设置为CardLayout。因此,您将在每个“卡”中插入一个新的JPanel。这是一个例子:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Foo extends JFrame {

    public Foo() {

        setTitle( "Tabs and Cards" );
        setSize( 400, 400 );
        setDefaultCloseOperation( EXIT_ON_CLOSE );

        JTabbedPane tabbedPane = new JTabbedPane();

        // needs to be final to be accessed inside the event handlers
        final JPanel tab1 = new JPanel();
        final JPanel tab2 = new JPanel();
        tab2.setLayout( new CardLayout() );

        tabbedPane.addTab( "Tab 1", tab1 );
        tabbedPane.addTab( "Tab 2", tab2 );


        JPanel tab21 = new JPanel();
        tab21.add( new JLabel( "2.1" ) );

        JPanel tab22 = new JPanel();
        tab22.add( new JLabel( "2.2" ) );

        JPanel tab23 = new JPanel();
        tab23.add( new JLabel( "2.3" ) );

        tab2.add( tab21 );
        tab2.add( tab22 );
        tab2.add( tab23 );


        JButton btnToTab22 = new JButton( "Next!" );
        btnToTab22.addActionListener( new ActionListener(){
            @Override
            public void actionPerformed( ActionEvent evt ) {
                // gets the layout, casts it and call next to go to the next card
                ( ( CardLayout ) tab2.getLayout() ).next( tab2 );
            }
        });
        tab21.add( btnToTab22 );

        JButton btnToTab23 = new JButton( "Next!" );
        btnToTab23.addActionListener( new ActionListener(){
            @Override
            public void actionPerformed( ActionEvent evt ) {
                ( ( CardLayout ) tab2.getLayout() ).next( tab2 );
            }
        });
        tab22.add( btnToTab23 );

        add( tabbedPane, BorderLayout.CENTER );

        setVisible( true );

    }

    public static void main( String[] args ) {
        new Foo();
    }

}


我没有注释代码,因为它不是那么复杂,但是我认为您会很容易理解。看一下文档。

关于java - 如何在JTabbedPane中制作CardLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11706948/

10-10 14:16