Hallo Forum,
wie das so ist, löst man das eine Problem, kommt gleich das nächste. Wer kann mir helfen?
Folgendes klitzkleine Testprogramm hab ich geschrieben:
Der Einstieg mit dem Laden der GUI
Die fxml Beschreibung der GUI
Dem GUIController
Und den beiden 'eigenen' Button und Label
Das erzeugt ein kleines Fenster mit einem Button und einem Label. Nach dem erzeugen werden die Texte der beiden im GUIController noch gesetzt. Man beachte, daß der verwendete Button und der verwendete Label in eigene Klassen vererbt wurden.
Das funktioniert soweit. Wenn ich allerdings bei MyButton und MyLabel im Konstruktor Argumente übergeben möchte, dann compiliert das Ganze nicht mehr.
Kann mir bitte einer sagen, was ich für diesen Fall machen muß?!
VG Holger
wie das so ist, löst man das eine Problem, kommt gleich das nächste. Wer kann mir helfen?
Folgendes klitzkleine Testprogramm hab ich geschrieben:
Der Einstieg mit dem Laden der GUI
Code:
package fxmltest;
import java.net.URL;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class FXMLTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
URL url = FXMLTest.class.getResource("../gui/gui.fxml");
Parent root = FXMLLoader.load(url);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("FXML Test");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Code:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import viewcontroller.MyButton?>
<?import viewcontroller.MyLabel?>
<BorderPane fx:id="borderPane" xmlns:fx="http://javafx.com/fxml"
fx:controller="gui.GUIController"
prefWidth="400" prefHeight="100">
<center>
<MyButton fx:id="myButton" prefHeight="25" prefWidth="80"/>
</center>
<bottom>
<MyLabel fx:id="myLabel" alignment="CENTER" maxWidth="Infinity"/>
</bottom>
</BorderPane>
Code:
package gui;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.BorderPane;
import viewcontroller.MyButton;
import viewcontroller.MyLabel;
public class GUIController implements Initializable {
@FXML
private BorderPane borderPane;
@FXML
private MyButton myButton;
@FXML
private MyLabel myLabel;
@Override
public void initialize(URL location, ResourceBundle resources) {
myButton.setText("drück' mich");
myLabel.setText("Ich bin ein Label :-)");
}
}
Code:
package viewcontroller;
import javafx.scene.control.Button;
public class MyButton extends Button {
public MyButton(){
}
}
Code:
package viewcontroller;
import javafx.scene.control.Label;
public class MyLabel extends Label {
public MyLabel() {
}
}
Das funktioniert soweit. Wenn ich allerdings bei MyButton und MyLabel im Konstruktor Argumente übergeben möchte, dann compiliert das Ganze nicht mehr.
Kann mir bitte einer sagen, was ich für diesen Fall machen muß?!
VG Holger