Hallo zusammen,
ich muss mal wieder nerven.
Folgendes Problem:
Habe eine Pane in Scenebuilder erstellt (siehe bild1).
Habe fenster.fxml Datei erstellt (siehe fenster.zip).
Habe fensterController.java erstellt:
Mein Main-Programm:
Im Main-Programm (Routine start) rufe ich eine Methode "gVarRout.setEingabe1Editable(Boolean.TRUE);" auf.
Im Programm fensterController ist die Methode "@FXML void setEingabe1Editable(Boolean wert)".
Wie man im Protokoll (Output-Run.txt) sehen kann wird zwar der Befehl " System.out.println("setEingabe1Editable = "+wert);"
noch ausgefüht, aber der Befehl "eingabe1.setEditable(true);" läuft auf Fehler.
Das paradoxe daran ist: Ich habe dieselben Befehle im Event "void B1Click(ActionEvent event)" drin und da laufen sie ohne Fehler.
Habe schon mehrere Sachen probiert und ins Internet geschaut, aber nix gefunden.
Hat da Jemand eine Idee? Wäre schön.
Danke und Gruß
Jürgen
ich muss mal wieder nerven.
Folgendes Problem:
Habe eine Pane in Scenebuilder erstellt (siehe bild1).
Habe fenster.fxml Datei erstellt (siehe fenster.zip).
Habe fensterController.java erstellt:
Java:
package com.juelin.projekt8;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Pane;
public class fensterController
{
@FXML
private Pane pane;
@FXML
private TextField eingabe1;
@FXML
private Label anzeige1;
@FXML
private Button knopf1;
public String einfeld;
@FXML
void B1Click(ActionEvent event)
{
if (knopf1.isVisible())
{
System.out.println("Button 1 Click");
eingabe1.setEditable(true);
System.out.println("Edittable gesetzt True");
setEingabe1Editable(Boolean.FALSE);
System.out.println("Edittable gesetzt False");
}
}
@FXML
void E1Action(ActionEvent event)
{
if (eingabe1.isEditable())
{
System.out.println("Edit 1 Enter <"+eingabe1.getText()+">");
}
}
@FXML
void E1Down(KeyEvent event)
{
if (eingabe1.isEditable())
{
System.out.println("Edit 1 Down");
}
}
@FXML
void E1Press(KeyEvent event)
{
if (eingabe1.isEditable())
{
System.out.println("Edit 1 Press");
}
}
@FXML
void setAnzeige1Visible(Boolean wert)
{
anzeige1.setVisible(wert);
}
@FXML
void setEingabe1Visible(Boolean wert)
{
eingabe1.setVisible(wert);
}
@FXML
void setEingabe1Editable(Boolean wert)
{
System.out.println("setEingabe1Editable = "+wert);
eingabe1.setEditable(true);
}
@FXML
String getEingabe1Text()
{
return eingabe1.getText();
}
@FXML
void setEingabe1Text(String wert)
{
eingabe1.setText(wert);
}
public String geteinfeld()
{
return einfeld;
}
public void seteinfeld(String wert)
{
this.einfeld = wert;
}
}
// anzeige1.setVisible(true);
// anzeige1.setText(" Label 1 ");
// anzeige1.setTextFill(Color.YELLOW);
// anzeige1.setFont(Font.font("Arial Bold", FontWeight.BOLD, 30));
// anzeige1.setBackground(new Background(new BackgroundFill(Color.BLUE, CornerRadii.EMPTY, Insets.EMPTY)));
// eingabe1.setVisible(true);
// eingabe1.setEditable(false);
// eingabe1.setText("");
// eingabe1.setFont(Font.font("Arial Bold", FontWeight.BOLD, 30));
// eingabe1.setBackground(new Background(new BackgroundFill(Color.LIGHTGRAY, CornerRadii.EMPTY, Insets.EMPTY)));
// knopf1.setVisible(true);
Mein Main-Programm:
Code:
package com.juelin.projekt8;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
/**
* JavaFX App
*/
public class App extends Application
{
@FXML
private Pane pane;
@FXML
private TextField eingabe1;
@FXML
private Label anzeige1;
@FXML
private Button knopf1;
@FXML
private static Scene scene;
@FXML
@Override
public void start(Stage stage) throws IOException
{
scene = new Scene(loadFXML("fenster"), 600, 400, Color.BLACK);
scene.setFill(Color.BLACK);
stage.setScene(scene);
stage.setTitle("mein erstes Programm mit SceneBuilder");
stage.setX(0);
stage.setY(0);
stage.setWidth(600);
stage.setHeight(400);
stage.centerOnScreen();
stage.setResizable(false);
stage.show();
fensterController gVarRout = new fensterController();
gVarRout.setEingabe1Editable(Boolean.TRUE);
}
@FXML
private static Parent loadFXML(String fxml) throws IOException
{
FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
return fxmlLoader.load();
}
@FXML
public static void main(String[] args)
{
launch();
}
}
Im Main-Programm (Routine start) rufe ich eine Methode "gVarRout.setEingabe1Editable(Boolean.TRUE);" auf.
Im Programm fensterController ist die Methode "@FXML void setEingabe1Editable(Boolean wert)".
Wie man im Protokoll (Output-Run.txt) sehen kann wird zwar der Befehl " System.out.println("setEingabe1Editable = "+wert);"
noch ausgefüht, aber der Befehl "eingabe1.setEditable(true);" läuft auf Fehler.
Das paradoxe daran ist: Ich habe dieselben Befehle im Event "void B1Click(ActionEvent event)" drin und da laufen sie ohne Fehler.
Habe schon mehrere Sachen probiert und ins Internet geschaut, aber nix gefunden.
Hat da Jemand eine Idee? Wäre schön.
Danke und Gruß
Jürgen