Hallo,
ich hoffe mein Fehler liegt irgentwo in kleiner syntax Error
Ich habe mir als Selbstübung vorgenommen, einen Calculator zu programieren, dessen GUI sich verändert jenachdem wie seine Size ist.
ist pure Übung wie gesagt, hat keine ernsthafte technische Anwendung.
damit es nicht im Chaos endet, will ich schrittweise vorgehen,
der Hauptcalculator wird in einer BorderPane dargestellt,
und jeder Element davon also TopPane, LeftPane usw kriegen eigene Konstruktoren,
die ich dann aufrufe wenn sich die Size von dem Hauptfenster sich verändert,
und zwar mit der aktueller Höhe und Breite der HauptBorderFrame, damit entsprechend mehr
oder weniger Buttons dargestellt werden.
Für den Anfang wollte ich gucken wie die Syntax dazu überhaupt geht und einfach für die TopPane einen einfachen Constructor geschrieben.
So in etwa hab ich es mir vorgestellt
und so in etwa sieht mein TopPaneConstructor aus.
in der main klasse rufe ich es einfach wie folgt auf
es sollte jetzt einfach Inhaltsloose Vbox wiedergeben, mit einem Label, Textfield und einer leeren Hbox.
die Vbox sollte laut meinem Verständniss jetzt auch fast die ganze Frame füllen, das wäre jetzt egal.
es kommt aber diese Meldung
aber ich deklariere doch am Anfang das ich einen Pane(); objekt returnen werde,
und habe Return pane; im code drin ?
der Constructor code ist jetzt wirklich noch sehr klein und übersichtlich,
ich hoffe mein Fehler sticht euch sofort ins Auge :/ ?
was hab ich übersehen ? soll ich "ReturnNode" nehmen ? (was auch immer es ist...)
ich nehme an sobald dies erledigt ist, sind auch die ganzen , ; usw Fehler beseitigt.
gmpf, danke im voraus...
hier der kompletter Main code, aber imho der tuht nicht wirklich mehr zur Sache beizutragen.
ich hoffe mein Fehler liegt irgentwo in kleiner syntax Error
Ich habe mir als Selbstübung vorgenommen, einen Calculator zu programieren, dessen GUI sich verändert jenachdem wie seine Size ist.
ist pure Übung wie gesagt, hat keine ernsthafte technische Anwendung.
damit es nicht im Chaos endet, will ich schrittweise vorgehen,
der Hauptcalculator wird in einer BorderPane dargestellt,
und jeder Element davon also TopPane, LeftPane usw kriegen eigene Konstruktoren,
die ich dann aufrufe wenn sich die Size von dem Hauptfenster sich verändert,
und zwar mit der aktueller Höhe und Breite der HauptBorderFrame, damit entsprechend mehr
oder weniger Buttons dargestellt werden.
Für den Anfang wollte ich gucken wie die Syntax dazu überhaupt geht und einfach für die TopPane einen einfachen Constructor geschrieben.
So in etwa hab ich es mir vorgestellt

und so in etwa sieht mein TopPaneConstructor aus.
Java:
public class MakeTop {
public Pane() MakeTop (double width, double height){
Pane pane = new Pane();
Label label = new Label();
TextField textField = new TextField();
VBox topVBox = new VBox();
HBox buttonBoxTop = new HBox(); // da werden später buttons hinzugefügt
topVBox.getChildren().addAll(label, textField, buttonBoxTop);
pane.getChildren(topVBox);
pane.setPrefSize(width, height); //dies wird später natürlich verändert.
Return pane;
}
}
in der main klasse rufe ich es einfach wie folgt auf
Java:
BorderPane pane = new BorderPane();
...
MakeTop() topPannel = new MakeTop(pane.getWidth(), pane.getHeight());
pane.setTop(topPannel);
es sollte jetzt einfach Inhaltsloose Vbox wiedergeben, mit einem Label, Textfield und einer leeren Hbox.
die Vbox sollte laut meinem Verständniss jetzt auch fast die ganze Frame füllen, das wäre jetzt egal.
es kommt aber diese Meldung

aber ich deklariere doch am Anfang das ich einen Pane(); objekt returnen werde,
und habe Return pane; im code drin ?
der Constructor code ist jetzt wirklich noch sehr klein und übersichtlich,
ich hoffe mein Fehler sticht euch sofort ins Auge :/ ?
was hab ich übersehen ? soll ich "ReturnNode" nehmen ? (was auch immer es ist...)
ich nehme an sobald dies erledigt ist, sind auch die ganzen , ; usw Fehler beseitigt.
gmpf, danke im voraus...
hier der kompletter Main code, aber imho der tuht nicht wirklich mehr zur Sache beizutragen.
Java:
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import java.awt.*;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
/**
*
* @author Ryan Salvador
* This is a beginner's sample application
* using JAVAFX
*
*/
public class Main extends Application {
@Override
public void start(final Stage stage) {
BorderPane pane = new BorderPane();
Scene scene = new Scene(pane);
stage.setScene(scene);
stage.setHeight(355);
stage.setWidth(280);
stage.setMinWidth(275);
stage.setMinHeight(350);
stage.setTitle("Resize me please");
stage.show();
MakeTop() topPannel = new MakeTop(pane.getWidth(), pane.getHeight());
pane.setTop(topPannel);
scene.widthProperty().addListener(new ChangeListener<Number>() {
@Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) {
System.out.println("Width: " + newSceneWidth);
if ((stage.getHeight()==stage.getMinHeight())&&(stage.getWidth()==stage.getMinWidth())){
stage.setTitle("Bigger, not smaller !");
}
}
});
scene.heightProperty().addListener(new ChangeListener<Number>() {
@Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneHeight, Number newSceneHeight) {
System.out.println("Height: " + newSceneHeight);
}
});
}
public static void main(String[] args) {
launch(args);
}
}