Ich versuche, eine TableView in JavaFX zu bekommen, um Inhalt dynamisch anzuzeigen.JavaFX FXML-Controller ClassNotFoundException
Wenn ich mein Programm laufen bekomme ich diesen Fehler:
java.lang.ClassNotFoundException: UserInterfaceController
Mein Controller „UserInterfaceController.java“ genannt, ist es unter dem gleichen Paket wie die FXML Datei und ich habe das Paket in der FXML importiert als Gut. Warum kann der Controller nicht gefunden werden?
FXML Datei:
<?import javafx.collections.*?>
<?import javafx.geometry.Insets?>
<?import java.lang.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.control.cell.*?>
<?import javafx.scene.layout.*?>
<?import d1example2.*?>
<GridPane alignment="center" hgap="10.0" vgap="10.0" fx:controller="UserInterfaceController"
xmlns:fx="http://javafx.com/fxml">
<TableView fx:id="tableView" GridPane.columnIndex="0" GridPane.rowIndex="1">
<columns>
</columns>
</TableView>
</GridPane>
Controller:
package d1example2;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.text.Text;
import javafx.util.Callback;
public class UserInterfaceController implements Initializable {
private Label label;
@FXML
private AnchorPane MainPane;
@FXML
private TextField FirstField;
@FXML
private Text TimesText;
@FXML
private Text EqualSign;
@FXML
private Text EquationResult;
@FXML
private TableColumn<?, ?> HalfColumn;
@FXML
private TableColumn<?, ?> DoubleColumn;
@FXML
private Button SubmitButton;
@FXML private TableView tableView;
@FXML
public void initialize(URL url, ResourceBundle rb) {
List<String> columns = new ArrayList<String>();
columns.add("col1");
columns.add("col2");
TableColumn [] tableColumns = new TableColumn[columns.size()];
int columnIndex = 0;
for(int i=0 ; i<columns.size(); i++) {
final int j = i;
TableColumn col = new TableColumn(columns.get(i));
col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableView.getColumns().addAll(col);
}
ObservableList<String> row = FXCollections.observableArrayList();
ObservableList<String> row1 = FXCollections.observableArrayList();
row.addAll("d1");
row.addAll("d11");
row1.addAll("d2");
row1.addAll("d22");
tableView.getItems().add(row);
tableView.getItems().add(row1);
}
@FXML
private void handleButtonAction(MouseEvent event) {
}
}
Hauptklasse:
package d1example2;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class D1Example2 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("FXML TableView Example");
Pane myPane = (Pane)FXMLLoader.load(getClass().getResource("UserInterface.fxml"));
Scene myScene = new Scene(myPane);
primaryStage.setScene(myScene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}