Вам не хватает следующих шагов
1. Инициализация JTabbedPane
tabbedPane = new JTabbedPane();
добавить панели в JTabbedPane
tabbedPane.add(panelTab1);
tabbedPane.add(panelTab2);
Следовательно, ваш окончательный код будет выглядеть следующим образом
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
final JFrame frame = new frmTabs();
});
}
}
class frmTabs extends JFrame implements constants{
private JTabbedPane tabbedPane;
private JPanel panelTab1;
private JPanel panelTab2;
public frmTabs()
{
tabbedPane = new JTabbedPane();
setContentPane(tabbedPane);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(FORM_LEFT, FORM_TOP, FORM_WIDTH, FORM_HEIGHT);
panelTab1 = new JPanel();
panelTab2 = new JPanel();
panelTab1.setName("first Tab"); //To add titles to your tabs
panelTab2.setName("Second Tab"); //to add titles to your tabs
tabbedPane.add(panelTab1);
tabbedPane.add(panelTab2);
pack();
setVisible(true);
setSize(FORM_WIDTH,FORM_HEIGHT);
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
JTabbedPane sourceTabbedPane = (JTabbedPane) changeEvent.getSource();
int index = sourceTabbedPane.getSelectedIndex();
System.out.println("Tab changed to: " + sourceTabbedPane.getTitleAt(index));
panelTab1.revalidate();
panelTab1.repaint();
panelTab2.revalidate();
panelTab2.repaint();
}
};
tabbedPane.addChangeListener(changeListener);
}
}
*NB Следующие строки добавят заголовки к вашим панелям с вкладками
panelTab1.setName("first Tab");
panelTab2.setName("Second Tab");
Вывод
Tab changed to: Second Tab
Tab changed to: first Tab
Process finished with exit code 0