Hallo
Wenn ich die die Höhe von Textarea mit setPrefRowCount ändere, schaffe ich es nicht die Ansicht zu aktualisieren.
Die Höhe wir zwar verändert und wenn ich dann die Breite der Applikation mit der Maus verringere, dann ändert sich auch die Ansicht des textarea.
Ich bin einfach nicht weiter gekommen.
Hier mein Code:
Vielleicht hat der Eine oder Andere eine Idee!
Ich kann echt Hilfe gebrauchen.
Wenn ich die die Höhe von Textarea mit setPrefRowCount ändere, schaffe ich es nicht die Ansicht zu aktualisieren.
Die Höhe wir zwar verändert und wenn ich dann die Breite der Applikation mit der Maus verringere, dann ändert sich auch die Ansicht des textarea.
Ich bin einfach nicht weiter gekommen.
Hier mein Code:
Java:
package netthor.checkup;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class FXAntwortZeile extends Application {
private int zaehler = 2;
private final StackPane root = new StackPane();
private HBox zeileFrage;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage primaryStage) {
primaryStage.setTitle("CheckUP");
final VBox xboxZeile = new VBox();
xboxZeile.getChildren().add(fragenzeile(1));
xboxZeile.getChildren().add(fragenzeile(2));
Button btAnwortZufuegen = new Button("Antwort zufügen");
final Button btAnwortLoeschen = new Button("Antwort löschen");
btAnwortZufuegen.setFont(Font.font("Arial", 14));
btAnwortLoeschen.setFont(Font.font("Arial", 14));
final HBox hboxZufuegen = new HBox();
HBox hboxLoeschen = new HBox();
hboxZufuegen.getChildren().add(btAnwortZufuegen);
hboxLoeschen.getChildren().add(btAnwortLoeschen);
HBox.setMargin(hboxLoeschen, new Insets(10, 10, 10, 10));
HBox.setMargin(hboxZufuegen, new Insets(10, 10, 10, 10));
HBox vbButtonAntwort = new HBox();
vbButtonAntwort.getChildren().add(hboxZufuegen);
vbButtonAntwort.getChildren().add(hboxLoeschen);
vbButtonAntwort.setAlignment(Pos.CENTER);
final VBox boxAntworten = new VBox();
boxAntworten.getChildren().add(xboxZeile);
boxAntworten.getChildren().add(vbButtonAntwort);
root.getChildren().add(boxAntworten);
btAnwortLoeschen.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (zaehler > 2) {
xboxZeile.getChildren().remove(--zaehler);
primaryStage.show();
}
}
});
btAnwortZufuegen.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (zaehler < 9) {
xboxZeile.getChildren().add(fragenzeile(++zaehler));
primaryStage.show();
}
for (int i = 2; i <= 9; i++) {
if (i == zaehler) {
textAreaVergroessern(zaehler);
}
}
}
});
textAreaVergroessern(1);
textAreaVergroessern(2);
primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show();
}
void mausauswertung(MouseEvent mouseEvent, int nummer) {
if (mouseEvent.getClickCount() == 2) {
TextArea ta = (TextArea) root.lookup("#TextAntwort" + nummer);
if (ta.prefRowCountProperty().getValue() == 2) {
ta.setPrefRowCount(10);
} else {
ta.setPrefRowCount(2);
}
}
}
void textAreaVergroessern(final int nummer) {
HBox Zeile = (HBox) root.lookup("#ZeileAntwort" + nummer);
Zeile.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
mausauswertung(mouseEvent, nummer);
}
});
}
public HBox fragenzeile(int nummer) {
Integer a = nummer;
final Label lbZaehler = new Label(nummer + ".)");
lbZaehler.setFont(Font.font("Arial", 14));
HBox hboxZaehler = new HBox();
hboxZaehler.setAlignment(Pos.CENTER_LEFT);
hboxZaehler.getChildren().add(lbZaehler);
HBox.setMargin(lbZaehler, new Insets(0, 10, 0, 10));
TextArea taAntwort = new TextArea();
taAntwort.setId("TextAntwort" + a);
taAntwort.setPrefRowCount(2);
final CheckBox cbTrue = new CheckBox();
HBox hboxCheckBox = new HBox();
hboxCheckBox.setAlignment(Pos.CENTER_LEFT);
hboxCheckBox.getChildren().add(cbTrue);
HBox.setMargin(cbTrue, new Insets(0, 5, 0, 10));
final Label lbTrueFalse = new Label("false");
lbTrueFalse.setFont(Font.font("Arial", 14));
lbTrueFalse.setTextFill(Color.RED);
zeileFrage = new HBox();
zeileFrage.setAlignment(Pos.CENTER_LEFT);
zeileFrage.setId("ZeileAntwort" + a.toString());
zeileFrage.getChildren().add(hboxZaehler);
zeileFrage.getChildren().add(taAntwort);
zeileFrage.getChildren().add(hboxCheckBox);
zeileFrage.getChildren().add(lbTrueFalse);
cbTrue.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable,
Boolean oldValue, Boolean newValue) {
if (newValue == true) {
lbTrueFalse.setText("true");
lbTrueFalse.setTextFill(Color.GREEN);
} else {
lbTrueFalse.setText("false");
lbTrueFalse.setTextFill(Color.RED);
}
}
});
return zeileFrage;
}
}
Vielleicht hat der Eine oder Andere eine Idee!
Ich kann echt Hilfe gebrauchen.