M
Mart
Gast
ich habe die folgenden Klassen
[CODE lang="java" title="controller"]package leftInfo;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import layout.interfaces.ControllerInterface;
public class LeftInfoBoxController implements ControllerInterface{
private LeftInfoBoxView view = new LeftInfoBoxView();
private LeftInfoBoxModel model = new LeftInfoBoxModel();
public LeftInfoBoxController() {
view.getStrengthValueTextProperty().bind(model.getStrengthValueProperty());
view.getHealthValueTextProperty().bind(model.getHealthValueProperty());
view.getlevelValueTextProperty().bind(model.getLevelValueProperty());
view.getTypeValueTextProperty().bind(model.getTypeValueProperty());
view.getArtistValueTextProperty().bind(model.getArtistValueProperty());
view.getPictureInfoGraphicProperty().bind(model.getImageProperty());
view.getEffectTextValueTextProperty().bind(model.getEffectTextValue());
}
@Override
public LeftInfoBoxView getTheView() {
return this.view;
}
public EventHandler<MouseEvent> getHoverHandlerForSuperView(){
return model.mouseHoveredHandler;
}
}
[/CODE]
[CODE lang="java" title="Model"]package leftInfo;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.input.MouseEvent;
import test.CardsModel;
public class LeftInfoBoxModel {
private ObjectProperty<Node> imageProperty = new SimpleObjectProperty<>();
private SimpleStringProperty strengthValue = new SimpleStringProperty("STRENGTH");
private SimpleStringProperty healthValue = new SimpleStringProperty("HEALTH");
private SimpleStringProperty levelValue = new SimpleStringProperty("LEVEL");
private SimpleStringProperty typeValue = new SimpleStringProperty("TYPE");
private SimpleStringProperty artistValue = new SimpleStringProperty("ARTIST");
private SimpleStringProperty effectTextValue = new SimpleStringProperty();
public SimpleStringProperty getEffectTextValue() {
return effectTextValue;
}
/**
* Sets the hover handler to show Card information<br>
* Needs To be set on a Super View ( Deck, Shop, Play )
* @implNote all "CardsModel" Objects in the layout will execute the Hover Handler<br>
*/
public EventHandler<MouseEvent> mouseHoveredHandler = event -> {
if( event.getTarget() instanceof CardsModel cardModel) {
this.strengthValue.set("STR: "+cardModel.getStrength());
this.healthValue.set("HP: "+cardModel.getHealth());
this.levelValue.set("LVL: "+cardModel.getLevel());
this.typeValue.set("TYPE: "+cardModel.getType());
this.artistValue.set("ARTIST: "+cardModel.getArtist());
this.effectTextValue.set("Effect:\n"+cardModel.getEffectString());
this.imageProperty.set(cardModel.getCardImage());
}
};
public ObjectProperty<Node> getImageProperty() {
return imageProperty;
}
public SimpleStringProperty getStrengthValueProperty() {
return strengthValue;
}
public SimpleStringProperty getHealthValueProperty() {
return healthValue;
}
public SimpleStringProperty getLevelValueProperty() {
return levelValue;
}
public SimpleStringProperty getTypeValueProperty() {
return typeValue;
}
public SimpleStringProperty getArtistValueProperty() {
return artistValue;
}
}
[/CODE]
[CODE lang="java" title="view"]package leftInfo;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
public class LeftInfoBoxView extends VBox {
private Button pictureInfo = new Button();
private Button strengthValue = new Button("Strength");
private Button healthValue = new Button("Health");
private Button typeInfo = new Button("Type");
private Button levelInfo = new Button("Level");
private Button artistInfo = new Button();
private TextArea effectText = new TextArea();
public LeftInfoBoxView() {
effectText.setEditable(false);
this.getStylesheets().add(getClass().getResource("leftInfoBoxStyle.css").toExternalForm());
artistInfo.setId("artistinfo");
pictureInfo.setId("pictureInfo");
this.getChildren().addAll(pictureInfo,new HBox(healthValue,strengthValue),new HBox(typeInfo,levelInfo),artistInfo,effectText);
}
public ObjectProperty<Node> getPictureInfoGraphicProperty() {
return pictureInfo.graphicProperty();
}
public StringProperty getStrengthValueTextProperty() {
return strengthValue.textProperty();
}
public StringProperty getHealthValueTextProperty() {
return healthValue.textProperty();
}
public StringProperty getTypeValueTextProperty() {
return typeInfo.textProperty();
}
public StringProperty getlevelValueTextProperty() {
return levelInfo.textProperty();
}
public StringProperty getArtistValueTextProperty() {
return artistInfo.textProperty();
}
public StringProperty getEffectTextValueTextProperty() {
return effectText.textProperty();
}
}[/CODE]
nur ich weis nicht ob ich mvvm umgesetzt habe bzw was ffehlt um dies zu tun... ich möchte fxml soweit wie möglcih umgehen udn eig nicht einsetzen.. .gut in diesem fall würde es mit fxml gehen aber wenn ich zb die karten zwischen den decks hin und her schiebe ist es für mich persönlich shcnell zu komplex mit fxml oder stell ich mich da wieder wie der erste mensch an
[CODE lang="java" title="controller"]package leftInfo;
import javafx.event.EventHandler;
import javafx.scene.input.MouseEvent;
import layout.interfaces.ControllerInterface;
public class LeftInfoBoxController implements ControllerInterface{
private LeftInfoBoxView view = new LeftInfoBoxView();
private LeftInfoBoxModel model = new LeftInfoBoxModel();
public LeftInfoBoxController() {
view.getStrengthValueTextProperty().bind(model.getStrengthValueProperty());
view.getHealthValueTextProperty().bind(model.getHealthValueProperty());
view.getlevelValueTextProperty().bind(model.getLevelValueProperty());
view.getTypeValueTextProperty().bind(model.getTypeValueProperty());
view.getArtistValueTextProperty().bind(model.getArtistValueProperty());
view.getPictureInfoGraphicProperty().bind(model.getImageProperty());
view.getEffectTextValueTextProperty().bind(model.getEffectTextValue());
}
@Override
public LeftInfoBoxView getTheView() {
return this.view;
}
public EventHandler<MouseEvent> getHoverHandlerForSuperView(){
return model.mouseHoveredHandler;
}
}
[/CODE]
[CODE lang="java" title="Model"]package leftInfo;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.input.MouseEvent;
import test.CardsModel;
public class LeftInfoBoxModel {
private ObjectProperty<Node> imageProperty = new SimpleObjectProperty<>();
private SimpleStringProperty strengthValue = new SimpleStringProperty("STRENGTH");
private SimpleStringProperty healthValue = new SimpleStringProperty("HEALTH");
private SimpleStringProperty levelValue = new SimpleStringProperty("LEVEL");
private SimpleStringProperty typeValue = new SimpleStringProperty("TYPE");
private SimpleStringProperty artistValue = new SimpleStringProperty("ARTIST");
private SimpleStringProperty effectTextValue = new SimpleStringProperty();
public SimpleStringProperty getEffectTextValue() {
return effectTextValue;
}
/**
* Sets the hover handler to show Card information<br>
* Needs To be set on a Super View ( Deck, Shop, Play )
* @implNote all "CardsModel" Objects in the layout will execute the Hover Handler<br>
*/
public EventHandler<MouseEvent> mouseHoveredHandler = event -> {
if( event.getTarget() instanceof CardsModel cardModel) {
this.strengthValue.set("STR: "+cardModel.getStrength());
this.healthValue.set("HP: "+cardModel.getHealth());
this.levelValue.set("LVL: "+cardModel.getLevel());
this.typeValue.set("TYPE: "+cardModel.getType());
this.artistValue.set("ARTIST: "+cardModel.getArtist());
this.effectTextValue.set("Effect:\n"+cardModel.getEffectString());
this.imageProperty.set(cardModel.getCardImage());
}
};
public ObjectProperty<Node> getImageProperty() {
return imageProperty;
}
public SimpleStringProperty getStrengthValueProperty() {
return strengthValue;
}
public SimpleStringProperty getHealthValueProperty() {
return healthValue;
}
public SimpleStringProperty getLevelValueProperty() {
return levelValue;
}
public SimpleStringProperty getTypeValueProperty() {
return typeValue;
}
public SimpleStringProperty getArtistValueProperty() {
return artistValue;
}
}
[/CODE]
[CODE lang="java" title="view"]package leftInfo;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
public class LeftInfoBoxView extends VBox {
private Button pictureInfo = new Button();
private Button strengthValue = new Button("Strength");
private Button healthValue = new Button("Health");
private Button typeInfo = new Button("Type");
private Button levelInfo = new Button("Level");
private Button artistInfo = new Button();
private TextArea effectText = new TextArea();
public LeftInfoBoxView() {
effectText.setEditable(false);
this.getStylesheets().add(getClass().getResource("leftInfoBoxStyle.css").toExternalForm());
artistInfo.setId("artistinfo");
pictureInfo.setId("pictureInfo");
this.getChildren().addAll(pictureInfo,new HBox(healthValue,strengthValue),new HBox(typeInfo,levelInfo),artistInfo,effectText);
}
public ObjectProperty<Node> getPictureInfoGraphicProperty() {
return pictureInfo.graphicProperty();
}
public StringProperty getStrengthValueTextProperty() {
return strengthValue.textProperty();
}
public StringProperty getHealthValueTextProperty() {
return healthValue.textProperty();
}
public StringProperty getTypeValueTextProperty() {
return typeInfo.textProperty();
}
public StringProperty getlevelValueTextProperty() {
return levelInfo.textProperty();
}
public StringProperty getArtistValueTextProperty() {
return artistInfo.textProperty();
}
public StringProperty getEffectTextValueTextProperty() {
return effectText.textProperty();
}
}[/CODE]
nur ich weis nicht ob ich mvvm umgesetzt habe bzw was ffehlt um dies zu tun... ich möchte fxml soweit wie möglcih umgehen udn eig nicht einsetzen.. .gut in diesem fall würde es mit fxml gehen aber wenn ich zb die karten zwischen den decks hin und her schiebe ist es für mich persönlich shcnell zu komplex mit fxml oder stell ich mich da wieder wie der erste mensch an