Hallo,
ich habe eine JTabbedPane mit zwei Tabs. Beim Wechsel zwischen den beiden Tabs soll ein JPanel ausserhalb der JTabbedPane verändert werden (realisiert über das Cardlayout soll einmal eine JTable und einmal eine JTextArea angezeigt werden).
Ich bekomme über einen ChangeListener den selectierten Tab und möchte so im CardLayout zwischen den beiden Layouts wechseln.
Lass ich mir durch den Tabwechsel den Index des gerade aktiven Tabs ausgeben (über “getSelectedIndex()”), erhalte ich die erwarteten Werte 0 bzw. 1.
Hier
System.out.println("TextPanel soll gezeigt werden");
CardLayout cl = (CardLayout)(panel.getLayout());
cl.show(panel, TEXTPANEL); ```
wechselt die beim Start dargestellte JTabel in die JTextArea -> soll so sein
Ergänze ich nun den Code, so dass beim Wechsel auf den ersten Tab wieder die JTabel dargesllt wird, erhalte ich eine NullPointerException (fireStateChanged Fehler).
``` final JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
System.out.println(tabbedPane.getSelectedIndex());
if (tabbedPane.getSelectedIndex()==1) {
System.out.println("TextPanel soll gezeigt werden");
CardLayout cl = (CardLayout)(panel.getLayout());
cl.show(panel, TEXTPANEL);
} else {
System.out.println("JTabelPanel soll gezeigt werden");
CardLayout cl = (CardLayout)(panel.getLayout());
cl.show(panel, JTABELPANEL);
}
}
});```
Fehlermeldung:
```java.lang.NullPointerException
0
JTabelPanel soll gezeigt werden
at Mgmt.MainFrame$4.stateChanged(MainFrame.java:404)
at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:400)
at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:253)
at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:116)
at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:50)
at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:599)
at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:574)
at javax.swing.JTabbedPane.insertTab(JTabbedPane.java:710)
at javax.swing.JTabbedPane.addTab(JTabbedPane.java:746)
at Mgmt.MainFrame.<init>(MainFrame.java:432)
at Mgmt.MainFrame$1.run(MainFrame.java:247)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:672)
at java.awt.EventQueue.access$400(EventQueue.java:81)
at java.awt.EventQueue$2.run(EventQueue.java:633)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:642)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)```
Ich wäre um Hilfe dankbar!
Danke GGK