2016-05-01 27 views
2

Ich muss ein Sudoku-Spiel machen. Als ich es ausprobiert habe, habe ich ein Problem gefunden, das ich nicht selbst beheben kann. Ich verwende SceneBuilder.If Sie irgendwelche Ideen zu meinem Problem oder einige Ratschläge zu lösen Ich wäre wirklich dankbar
, dass mein Code ist:
FXMLDocumentControllerAusnahme im Thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Argumenttyp stimmt nicht überein

public class FXMLDocumentController implements Initializable { 

@FXML 
private GridPane grid; 
public TextField[][] field= new TextField[9][9]; 
public class getXY{ 
    private TextField temp; 
    private int a; 
    int x,y; 
    public int getNodeByRowColumnIndex(final int row,final int column,GridPane gridPane) { 
    Node result = null; 
    ObservableList<Node> childrens = gridPane.getChildren(); 
    for(Node node : childrens) { 
     if(gridPane.getRowIndex(node) == row && gridPane.getColumnIndex(node) == column) { 
      temp = (TextField) node; 
      a=Integer.parseInt(temp.getText()); 
      break; 
     } 
    } 
    return a; 
} 
} 
@FXML 
private void handleButtonAction(ActionEvent event) { 
    getXY a = new getXY(); 
    for (int i=0; i<9;i++) 
     for (int j=0; j<9;j++){ 

    //int temp=a.getNodeByRowColumnIndex(i, j, grid); 
    System.out.println("1"); 

     } 

     } 




@Override 
public void initialize(URL url, ResourceBundle rb) { 
    for (int i=0; i<9;i++) 
     for (int j=0; j<9;j++){ 
      //field[i][j].setText("0"); 
      TextField ffield = new TextField("0"); 
      grid.add(ffield,i,j); 
     }  
} } 

FXMLDocument.fxml

<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.layout.ColumnConstraints?> 
<?import javafx.scene.layout.GridPane?> 
<?import javafx.scene.layout.RowConstraints?> 

<AnchorPane id="AnchorPane" prefHeight="411.0" prefWidth="639.0"  xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sudokuv2.FXMLDocumentController"> 
<children> 
<GridPane fx:id="grid" gridLinesVisible="true" layoutX="22.0" layoutY="51.0" onKeyReleased="#handleButtonAction" prefHeight="338.0" prefWidth="596.0"> 
<columnConstraints> 
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
     <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> 
    </columnConstraints> 
    <rowConstraints> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
     <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> 
    </rowConstraints> 
    </GridPane> 
    </children> 
</AnchorPane> 

Und Ergebnis:

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: argument type mismatch 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) 
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) 
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1769) 
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657) 
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
at javafx.event.Event.fireEvent(Event.java:198) 
at javafx.scene.Scene$KeyHandler.process(Scene.java:3964) 
at javafx.scene.Scene$KeyHandler.access$1800(Scene.java:3910) 
at javafx.scene.Scene.impl_processKeyEvent(Scene.java:2040) 
at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2501) 
at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:197) 
at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:147) 
at java.security.AccessController.doPrivileged(Native Method) 
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$353(GlassViewEventHandler.java:228) 
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:227) 
at com.sun.glass.ui.View.handleKeyEvent(View.java:546) 
at com.sun.glass.ui.View.notifyKey(View.java:966) 
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
at java.lang.Thread.run(Thread.java:745) 
+0

[Bearbeiten] Ihre Frage zu schließen die vollständige Stapelverfolgung –

Antwort

4

Ihre Handler-Methode zum onKeyReleased han verknüpft ist Dler für die GridPane:

<GridPane fx:id="grid" ... onKeyReleased="#handleButtonAction" ... > 

Seit onKeyReleased ein EventHandler<KeyEvent> erwartet, Ihre Methode KeyEvent sein sollte Parametertyp (die Sie sehr verwechselbar handleButtonAction genannt), nicht ActionEvent:

@FXML 
private void handleButtonAction(KeyEvent event) { 
    // ... 
} 
Verwandte Themen