Tabs NPE Tab.getSelectionModel()JavaFx
我有一个问题: 我得到了一个选项卡窗格,设计在一个FXML文件中。现在我想在单击“检查”按钮时更改所选选项卡的名称Tabs NPE Tab.getSelectionModel()JavaFx,tabs,nullpointerexception,javafx,tabpanel,Tabs,Nullpointerexception,Javafx,Tabpanel,我有一个问题: 我得到了一个选项卡窗格,设计在一个FXML文件中。现在我想在单击“检查”按钮时更改所选选项卡的名称 public void onAddDateRequest(){ try { //datePane wird in den FXML Loader geladen FXMLLoader loader = new FXMLLoader(getClass().getResource("/homenizer/view/datePane.fxml")
public void onAddDateRequest(){
try {
//datePane wird in den FXML Loader geladen
FXMLLoader loader = new FXMLLoader(getClass().getResource("/homenizer/view/datePane.fxml"));
Parent content = (Parent)loader.load();
Tab tab = new Tab("Neuer Termin");
tab.setContent(content); //Dem neuen Tab wird das Layout der FXXML Datei aus Content zugewiesen
tabPane.getTabs().add(tab);
} catch (IOException ex) {
Logger.getLogger(HomenizerController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void onCheckRequest(){
Date date = new Date();
tabPane.getSelectionModel().getSelectedItem().setText("A");
}
单击按钮添加新选项卡时,将调用“onAddDateRequest”方法
这里是FXML文件:
<TabPane fx:id="tabPane">
<Tab text="Willkommen" closable="true" >
<VBox>
<TitledPane text="Allgemeines" expanded="true">
<GridPane>
<Label text="Benutzername:" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<Label fx:id="username" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label text="Termine gesamt:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Label fx:id="dates" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Aufgaben gesamt:" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<Label fx:id="toDos" GridPane.columnIndex="1" GridPane.rowIndex="2" />
</GridPane>
</TitledPane>
<TitledPane text="Aktuell" expanded="true" >
<ScrollPane>
<GridPane>
<Label text="Aktuelle Termine:" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<Label fx:id="actualDates" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label text="Aktuelle Aufgaben:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Label fx:id="actualToDos" GridPane.columnIndex="1" GridPane.rowIndex="1" />
</GridPane>
</ScrollPane>
</TitledPane>
</VBox>
</Tab>
</TabPane>
谢谢你的帮助,我不知道你是否需要更多我的代码,但是我确信他们在我的代码中没有错误 因此我发现了错误:)我在controllercode中为我的FXML设置了控制器,而不是在FXML文件本身中,现在它可以工作了发布其余代码。如果tabPane不为null,是否在调试模式下选中?tabPane是您在FXML上指示的fx:id吗?很难知道该代码的问题好吧,我已经编辑了我的邮戳,因为您的选项卡窗格不为空,但可能存在这样一种情况,即您没有选择任何内容,并且getSelectedItem()必须返回nullHmm…当我调用getSelectedIndex()方法时,它始终返回-1。如果调用getTabs().getSize()方法,它总是返回0。另外,我想知道为什么我必须在我的控制器中初始化我的TabPane,如果我不初始化它,我还通过上面提到的两种方法得到了一个NPE。
<ScrollPane fx:id="scrollPane" minHeight="350.0" xmlns:fx="http://javafx.com/fxml" fx:controller="homenizer.controller.HomenizerController">
<VBox>
<TitledPane text="Termin" expanded="true">
<GridPane fx:id="datePane" alignment="TOP_LEFT" hgap="10" vgap="10" prefWidth="900" >
<Label text="Termin Beschreibung" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<TextField fx:id="dateInformation" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Datum" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<TextField fx:id="dateOfDate" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label text="Termin beginn" GridPane.columnIndex="0" GridPane.rowIndex="3" />
<TextField fx:id="dateTimeBegin" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="Termin ende" GridPane.columnIndex="2" GridPane.rowIndex="3" />
<TextField fx:id="dateTimeEnd" GridPane.columnIndex="3" GridPane.rowIndex="3" />
<Label text="Priorität" GridPane.columnIndex="0" GridPane.rowIndex="4" />
<fx:define>
<ToggleGroup fx:id="priorityGroup" />
</fx:define>
<RadioButton text="Hoch" GridPane.columnIndex="1" GridPane.rowIndex="4" toggleGroup="$priorityGroup" />
<RadioButton text="Normal" GridPane.columnIndex="1" GridPane.rowIndex="5" toggleGroup="$priorityGroup"/>
<RadioButton text="Niedrig" GridPane.columnIndex="1" GridPane.rowIndex="6" toggleGroup="$priorityGroup"/>
</GridPane>
</TitledPane>
<TitledPane text="Person/Unternehmen" ellipsisString="Persson / Unternehmen" expanded="false" >
<GridPane fx:id="personCompanyPane" hgap="10" vgap="10">
<Label text="Name" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<TextField fx:id="name" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label text="Vorname" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<TextField fx:id="firstname" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Ort" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<TextField fx:id="city" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label text="PLZ" GridPane.columnIndex="2" GridPane.rowIndex="2" />
<TextField fx:id="place" maxWidth="60" GridPane.columnIndex="3" GridPane.rowIndex="2" />
<Label text="Strasse" GridPane.columnIndex="0" GridPane.rowIndex="3" />
<TextField fx:id="street" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="Hausnr." GridPane.columnIndex="2" GridPane.rowIndex="3" />
<TextField fx:id="houseNr" maxWidth="35" GridPane.columnIndex="3" GridPane.rowIndex="3" />
<Label text="Unternehmen" GridPane.columnIndex="0" GridPane.rowIndex="4" />
<TextField fx:id="company" GridPane.columnIndex="1" GridPane.rowIndex="4" />
</GridPane>
</TitledPane>
<TitledPane text="Notiz" expanded="false" >
<GridPane>
<Label text="Notiz" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<TextArea GridPane.columnIndex="0" GridPane.rowIndex="1" prefWidth="900" />
</GridPane>
</TitledPane>
<HBox>
<Button fx:id="check" text="bestätigen"
onAction="#onCheckRequest"/>
<Button fx:id="cancel" text="abbrechen" />
</HBox>
</VBox>
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1456)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:28)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Node.fireEvent(Node.java:6867)
at javafx.scene.control.Button.fire(Button.java:179)
at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:193)
at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:336)
at com.sun.javafx.scene.control.skin.SkinBase$4.handle(SkinBase.java:329)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3369)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3209)
at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3164)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1582)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2267)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:250)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:173)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:292)
at com.sun.glass.ui.View.handleMouseEvent(View.java:530)
at com.sun.glass.ui.View.notifyMouse(View.java:924)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1453)
... 64 more
Caused by: java.lang.NullPointerException
at homenizer.controller.HomenizerController.onCheckRequest(HomenizerController.java:105)
... 74 more