我正在使用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/