Mehtode bei Start des Programms ausführen (Klassen übergreifend)

Zakon

Bekanntes Mitglied
Hallo zusammen,

ich möchte eine Methode die ich in einer Klasse geschirben habe bei Start des Programms ausführen lasssen.
Java:
@FXML
    public void befuellen() {
        boxFirma.setItems((ObservableList<FirmenDetails>)data1);
        boxProdukt.setItems((ObservableList<ProduktDetails>) data2);
        boxName.setItems((ObservableList<allDetails>) dataall);
    }

    @FXML
    public void loadDataFromDatabase() {
        loadFirmaButton.setOnAction(event -> dropdownFirmen());
        loadProduktButton.setOnAction(event -> dropdownProdukt());
        updateButton.setOnAction(event -> bearbeitung());

        try {
            if(loadFirmaButton.isPressed()){
                dataall = FXCollections.observableArrayList();
                dropdownFirmen();
                loadalldetails();
            }
            else if (loadProduktButton.isPressed()){
                dataall = FXCollections.observableArrayList();
                dropdownProdukt();
                loadalldetails();
            }
            else if(updateButton.isPressed()){
                dataall = FXCollections.observableArrayList();
                bearbeitung();
                loadalldetails();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Java:
public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("view.fxml"));
        primaryStage.setTitle("Datenbank Firmen");
        primaryStage.setScene(new Scene(root, 800, 600));
        primaryStage.show();

    }


    @Override
    public void stop() throws Exception {
        DBConnection.getInstance().getCon().close();
        super.stop();
    }

    @Override
    public void init() throws Exception {
        DBConnection.getInstance().connect();
        super.init();
    }

    public static void main(String[] args) throws NoSuchMethodException {
        launch(args);
    }

}


Ich bin mir nicht sicher wie ich das ganze anstelle.
Danbke im vorraus für eure Hilfe 😁
 

mrBrown

Super-Moderator
Mitarbeiter
Naja, beim Start des Programms halt die Methode aufrufen – nicht anders als bei den anderen Methoden, die du aufrufst. Hast du irgendein konkretes Problem?
 

Zakon

Bekanntes Mitglied
Ja ich bekomme meine Methoden nicht vorgeschlagen und kann die auch nicht benutzen und ich weiss nicht ganz warum 🤔
 
K

kneitzel

Gast
Was genau probierst Du denn? Die Ausschnitte, die Du gebracht hast, geben diesbezüglich bisher keine wirklichen Informationen preis.
 

Zakon

Bekanntes Mitglied
Ich habe drei Klassen einmal DBConnection(SQL / alles von der Datenbank), Controller(logic klasse zum nehmen der Informationen) und view (alles für JavaFx / Oberfläche) (und natürlich noch die Main klasse). jetzt habe ich das problem das das befüllen von zb der Boxen direkt am anfang passieren muss also in meiner Main Klasse. Ich bekomme diese methode die befuellen beei mir heißt aber nicht vorgeschlagen bzw kann sie auch manuel nicht in die main reinschreiben 🤔 Würde den Code posten nur ist es ziemlich viel..
 
K

kneitzel

Gast
Also im Controller sowas wie:
Java:
    @FXML
    public void initialize() {
        // Hier befüllen aufrufen?
    }

Ansonsten gehört dies nicht in die main, denn Du hast da in der Regel keinen Controller. Du kannst Ihn Dir natürlich noch geben lassen über den FXMLLoader, aber da gehört das, was Du vor hast, ja einfach nicht hin ...
 

Zakon

Bekanntes Mitglied
die Methoden die ich aufrufen möchte sind aber nicht im COntroller sondern in meiner View class. Kommt es dann auf das gleiche hinaus? 🤔
 
K

kneitzel

Gast
Dann zeig den ganzen Aufbau und nicht nur die Ausschnitte. Was ist in der view.fxml als Controller angegeben?
Was ist das für eine Klasse, in der Du lauter @FXML Attribute verwendest und was sollen diese an welcher Stelle bewirken?
 

Zakon

Bekanntes Mitglied
Das ist meine View class:
Java:
 @FXML
    public void initialize(){
        befuellen();
        startTabelle();
    }

    @FXML
    public  void befuellen() {
        boxFirma.setItems((ObservableList<FirmenDetails>)data1);
        boxProdukt.setItems((ObservableList<ProduktDetails>) data2);
        boxName.setItems((ObservableList<allDetails>) dataall);
    }
    @FXML
    public void startTabelle(){
        loadDataStart();
        loadalldetails();
    }


    @FXML
    private void loadalldetails(){
        columnID2.setCellValueFactory(new PropertyValueFactory<>("ID2"));
        columnFirmenName2.setCellValueFactory(new PropertyValueFactory<>("FirmenName2"));

        columnMitarbeiter_ID2.setCellValueFactory(new PropertyValueFactory<>("Mitarbeiter_ID2"));
        columnVorname2.setCellValueFactory(new PropertyValueFactory<>("Vorname2"));
        columnNachname2.setCellValueFactory(new PropertyValueFactory<>("Nachname2"));
        columnFirmen_ID2.setCellValueFactory(new PropertyValueFactory<>("Firmen_ID2"));

        columnProdukt_ID2.setCellValueFactory(new PropertyValueFactory<>("Produkt_ID2"));
        columnProdukt2.setCellValueFactory(new PropertyValueFactory<>("Produkt2"));

        tableall.setItems(null);
        tableall.setItems((ObservableList<allDetails>) dataall);
    }
}
Controller class:
Java:
public class Controller {

    //ObservableLists
    public List<UserDetails> data;
    public List<FirmenDetails> data1;
    public List<ProduktDetails> data2;
    public List<allDetails> dataall;

    //Verschönerung des Codes
    //Controller Klasse nur Aufruf der Daten über Methode in Model


    public void loadDataStart(){
        dataall = FXCollections.observableArrayList();
        DBConnection.getInstance().loadData();
    }
    //DropDown Firmen
    public void dropdownFirmen(){
        dataall = FXCollections.observableArrayList();
        DBConnection.getInstance().loadFirmenDetails();
    }

    //DropDown Produkt
    public void dropdownProdukt(){
        dataall = FXCollections.observableArrayList();
        DBConnection.getInstance().loadProduktDetails();
    }
    public void bearbeitung(){
        dataall = FXCollections.observableArrayList();
        DBConnection.getInstance().bearbeitungDetails();
    }
}
fxml:
Java:
 <Tab text="SELECT X/Y">
                  <content>
                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="303.0" prefWidth="818.0">
                           <children>
                              <TableView fx:id="tableall" layoutX="166.0" layoutY="8.0" prefHeight="533.0" prefWidth="740.0">
                                <columns>
                                  <TableColumn fx:id="columnID2" prefWidth="49.59991455078125" text="ID" />
                                  <TableColumn fx:id="columnFirmenName2" prefWidth="120.39994812011719" text="FirmeName" />
                                    <TableColumn fx:id="columnMitarbeiter_ID2" prefWidth="90.39996337890625" text="Mitarbeiter_ID" />
                                    <TableColumn fx:id="columnVorname2" prefWidth="101.5999755859375" text="Vorname" />
                                    <TableColumn fx:id="columnNachname2" prefWidth="108.39996337890625" text="Nachname" />
                                    <TableColumn fx:id="columnProdukt_ID2" prefWidth="69.59991455078125" text="Produkt_ID" />
                                    <TableColumn fx:id="columnProdukt2" prefWidth="59.9998779296875" text="Produkt" />
                                    <TableColumn fx:id="columnFirmen_ID2" prefWidth="69.5999755859375" text="Fimren_ID" />
                                </columns>
                              </TableView>
                              <Button fx:id="laden" layoutX="17.0" layoutY="48.0" mnemonicParsing="false" onAction="#dropdownFirmen" text="Laden" />
                              <ComboBox fx:id="boxFirma" layoutX="14.0" layoutY="85.0" prefWidth="150.0" />
                              <Button fx:id="laden2" layoutX="15.0" layoutY="188.0" mnemonicParsing="false" onAction="#dropdownProdukt" text="Laden" />
                              <ComboBox fx:id="boxProdukt" layoutX="14.0" layoutY="226.0" prefWidth="150.0" />
                           </children>
                        </AnchorPane>
                  </content>
                </Tab>
                  <Tab text="Bearbeitungen">
                    <content>
                      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="571.0" prefWidth="995.0">
                           <children>
                              <TableView fx:id="tableall1" layoutX="203.0" layoutY="14.0" prefHeight="533.0" prefWidth="677.0">
                                 <columns>
                                    <TableColumn fx:id="columnID21" prefWidth="49.59991455078125" text="ID" />
                                    <TableColumn fx:id="columnFirmenName21" prefWidth="120.39994812011719" text="FirmeName" />
                                    <TableColumn fx:id="columnMitarbeiter_ID21" prefWidth="90.39996337890625" text="Mitarbeiter_ID" />
                                    <TableColumn fx:id="columnVorname21" prefWidth="101.5999755859375" text="Vorname" />
                                    <TableColumn fx:id="columnNachname21" prefWidth="108.39996337890625" text="Nachname" />
                                    <TableColumn fx:id="columnProdukt_ID21" prefWidth="69.59991455078125" text="Produkt_ID" />
                                    <TableColumn fx:id="columnProdukt21" prefWidth="59.9998779296875" text="Produkt" />
                                    <TableColumn fx:id="columnFirmen_ID21" prefWidth="69.5999755859375" text="Fimren_ID" />
                                 </columns>
                              </TableView>
                              <Text layoutX="14.0" layoutY="109.0" strokeType="OUTSIDE" strokeWidth="0.0" text="UPDATE" wrappingWidth="96.13671875" />
                              <Text layoutX="14.0" layoutY="184.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Zu Produkt:" wrappingWidth="96.13671875" />
                              <TextField fx:id="wert1" layoutX="14.0" layoutY="194.0" />
                              <Button fx:id="update" layoutX="14.0" layoutY="240.0" mnemonicParsing="false" onAction="#bearbeitung" text="UPDATE" />
                              <ComboBox fx:id="boxName" layoutX="14.0" layoutY="113.0" prefWidth="150.0" />
                           </children></AnchorPane>

Ich möchte halt aus der View class die Methode befullen und starttabelle bei programmstart direkt ausführen lassen.

Habe jetzt nur das nötigste aus den codes eingefügt hoffe das reicht so.

Und hier noch wo in der fxml die Controller class bestimmt ist :
Java:
<GridPane alignment="center" hgap="10" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="652.0" prefWidth="1000.0" vgap="10" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Main.logic.Controller">
 
K

kneitzel

Gast
Das ist nur ein Auszug aus der fxml Datei und da steckt nicht drin, was wichtig ist. Das wäre halt ob und wo in dem fxml ein fx:controller Attribut gesetzt wurde.

Ich vermute, dass dies vorhanden ist und dass dies auf Deine "View" Klasse verweist. (Was die Klasse streng genommen zu dem Controller macht. Da vorhandene Begriffe anders zu verwenden, lehne ich strikt ab und würde ich Dir auch von abraten. Den Controller "View" zu nennen, wäre ok. Aber dann gibt es keinen Controller mehr! Das wäre z.B. in einem MVVM Model denkbar (z.B. mit mvvmFX):
View: Dies umfasst dann das fxml File sowie die "Controller" Klasse, die dann auch vom Namen her View heissen sollte,
Model: Das sind dann die üblichen Klassen die halt sozusagen die Business Logik enthalten.
ViewModel: Das wäre dann, was du etwas als Controller bezeichnest: Ein speziell für die View aufgebautes Model, welches die Daten in einer Form vorhält, die die View benötigt (also speziell das Observer Pattern ermöglichen - darum geht es in erster Linie aus meiner Sicht)

Aber unabhängig davon, wie Du die Klasse benennen willst: Die Klasse, von der der FXMLLoader eine Instanz erstellt (als Controller) und dabei dann u.a. nach @FXML Annotations schaut, ist die Klasse, in der du auch das gezeigte initialize machen kannst. Und das scheint auch die Klasse zu sein, die die gewünschte Methode enthält, die du aufrufen möchtest ...

Und das ist auch die Methode, die generell verwendet werden soll, irgendwas mit den Controls zu machen, die Du vom FXMLLoader injecten lassen hast (und die daher im Konstruktor noch null sind)....
 

Zakon

Bekanntes Mitglied
Ok perfekt danke ich verstehe 😁
Der Sinn hinter dieser aufteilung ist halt das ich keine zwei sprachen in einer klasse habe und somit immer sprachen, klassen unabhängig alles ändern kann.
 
K

kneitzel

Gast
Also nur, dass es deutlich wird: Die Aufteilung selbst ist vollkommen in Ordnung! Die Benennung finde ich nur verwirrend - speziell, dass etwas als Controller benannt wird, aber dann bei Controller im fxml wohl nicht eingetragen ist.

Generell halte ich die Aufteilung sogar für sehr gut - nur eben mit den Begrifflichkeiten bei MVVM - evtl. willst Du dir bei Gelegenheit ja mal auf github das mvvmFX ansehen. Aber das ist nicht zwingend notwendig, aber ggf. bietet es noch Dinge, die Dir das Leben auch etwas einfacher machen....
 

Zakon

Bekanntes Mitglied
Ok ich bedanke mich werde ich mir mal bei gelegenheit angucken. Und ich achte natürlich das nächste mal auf die bennenung 😁
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Getter Mehtode Unsicher Java Basics - Anfänger-Themen 6
G wait()-Mehtode Java Basics - Anfänger-Themen 13
B Methode als variable an andere Mehtode übergeben Java Basics - Anfänger-Themen 17
P Anzahl von Argu einer Mehtode Java Basics - Anfänger-Themen 7
Hilde22 Neu Start JButton einfügen Java Basics - Anfänger-Themen 2
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
richrich99 error: illegal start of expression Java Basics - Anfänger-Themen 10
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
T Start-Activity für Java Maven Web-Anwendung festlegen Java Basics - Anfänger-Themen 2
J Can't start eclipse Java Basics - Anfänger-Themen 5
D Neuer Start- und Endpunkt kann nur an bereits vorhandenen Start- oder Endpunkt anliegen Java Basics - Anfänger-Themen 2
J Compiler-Fehler Illegal Start of expression / '/'expected Java Basics - Anfänger-Themen 3
C NoClassDefFoundError mit externer Jar bei Start aus Eclipse Java Basics - Anfänger-Themen 3
B Schleife von anderer Methode stoppen? (Start continue) Java Basics - Anfänger-Themen 18
J Problem bei seriellem Start von Threads Java Basics - Anfänger-Themen 11
T Not a Statement/Illegal Start of expression bei for Anweisung Java Basics - Anfänger-Themen 6
N Passwort Anfrage vor Programm start Java Basics - Anfänger-Themen 1
S Fehler: Hauptklasse bin.demo.Start konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 2
S Methoden Beim Start meines Projektes eine Methode ausführen Java Basics - Anfänger-Themen 14
P ,,Illegal start of expression,, Java Basics - Anfänger-Themen 3
S Compiler-Fehler illegal start of expression Java Basics - Anfänger-Themen 4
S Dataflow von Start bis die SystemProperties class Java Basics - Anfänger-Themen 1
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
M "illegal start of type" eindimensionales Schiffe versenken Java Basics - Anfänger-Themen 7
P illegal start of expression wie löse ich das? Java Basics - Anfänger-Themen 2
S Caesar Verschlüsselung Start Hilfe Java Basics - Anfänger-Themen 4
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
thet1983 start & paint Methode? Java Basics - Anfänger-Themen 0
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
S JProgressbar mit individuellem Start/Endpunkt Java Basics - Anfänger-Themen 11
R illegal start of expression - 3 Strings vergleichen mit .equals () Java Basics - Anfänger-Themen 5
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
X Compiler-Fehler illegal start of expression Java Basics - Anfänger-Themen 9
Dogge Start:Applet nicht Initialisiert Java Basics - Anfänger-Themen 11
P Illegal start of expression Java Basics - Anfänger-Themen 8
V Start ins Java Game Development Java Basics - Anfänger-Themen 22
M Erster JAR Start überprüfen Java Basics - Anfänger-Themen 6
O Illegal start of expression Java Basics - Anfänger-Themen 3
E Program Start Java Basics - Anfänger-Themen 2
B Threads Interrupt und start Java Basics - Anfänger-Themen 2
E Program Start Java Basics - Anfänger-Themen 2
J JDK installieren JCreator erkennt JDK nicht. "Failed to start the following executable" Java Basics - Anfänger-Themen 3
L Illegal start of expression? Java Basics - Anfänger-Themen 4
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
M Beim Start Methode laden die Textfelder füllt Java Basics - Anfänger-Themen 5
M Bei *.jar start kompletten String übergeben Java Basics - Anfänger-Themen 7
S Java Web Start lädt keine Bilder Java Basics - Anfänger-Themen 2
M Mehrere Threads nutzen --> run() schneller als start(), Warum? Java Basics - Anfänger-Themen 3
D Start- + Stopzeit Java Basics - Anfänger-Themen 7
J start(); bei bluej Java Basics - Anfänger-Themen 3
R GUI mit if-Verzweigung kombiniert - Illegal start of expression (Dringend) Java Basics - Anfänger-Themen 7
S Illegal Start? Java Basics - Anfänger-Themen 4
T Datenbank automatisch erzeugen beim ersten Start Java Basics - Anfänger-Themen 6
L Illegal Start of Type, wie finde ich den fehler Java Basics - Anfänger-Themen 4
P BlueJ Fehlermeldung - Illegal Start of Type Java Basics - Anfänger-Themen 8
M Java-web-start weg? Java Basics - Anfänger-Themen 2
S illegal start of expression Java Basics - Anfänger-Themen 2
D OOP Applet-Start Fehler Java Basics - Anfänger-Themen 2
Semox Fehler in Eclipse vor Start eines Applets anzeigen? Java Basics - Anfänger-Themen 2
F Richtiger Start in Java? Java Basics - Anfänger-Themen 2
S Start einer Applikation Java Basics - Anfänger-Themen 10
B Applet: Event-Handling-Methode in start- bzw. paint-Methode Java Basics - Anfänger-Themen 7
G Applet - Methode start() wird nicht aufgerufen Java Basics - Anfänger-Themen 2
M [Hibernate] "Illegal start of expression"-Fehler b Java Basics - Anfänger-Themen 2
G Java beim Start ausführen Java Basics - Anfänger-Themen 2
A Start über Konsole nicht möglich Java Basics - Anfänger-Themen 4
M Zeitdifferenz von Ende - sleep(x) - Start von x abhängig Java Basics - Anfänger-Themen 6
D "Illegal Start of Expression" und "; expected Java Basics - Anfänger-Themen 3
A Integer Value Error beim Start Java Basics - Anfänger-Themen 5
J Start mit .exe-Datei oder Desktop-Symbol möglich? Java Basics - Anfänger-Themen 12
A Methoden am start ausführen Java Basics - Anfänger-Themen 6
G Problem: Start: Applet nicht initialisiert Java Basics - Anfänger-Themen 4
G Start Java Basics - Anfänger-Themen 9
K JavaKara Programm - erfolgreich compiliert jedoch kein Start Java Basics - Anfänger-Themen 12
G Immer wieder illegal start of expression Java Basics - Anfänger-Themen 15
G nach Thread.start(); nochmal start(); aufrufen geht nicht Java Basics - Anfänger-Themen 4
F JFrame bei Start von Application öffnen Java Basics - Anfänger-Themen 15
L toggle button reagiert nicht mehr nach while-start Java Basics - Anfänger-Themen 8
B Dateien laden beim Start Java Basics - Anfänger-Themen 7
G Blue J - Fehlermeldung - identifier expected - illegal start Java Basics - Anfänger-Themen 6
E illegal start of expression Java Basics - Anfänger-Themen 4
G start-oder paint-Methode anstatt Event-Handling-Methode? Java Basics - Anfänger-Themen 3
N Problem beim Start von java-progs Java Basics - Anfänger-Themen 4
S private String text; -> "Illegal start of expression Java Basics - Anfänger-Themen 7
S Bilder gleich am Start zeichnen. Java Basics - Anfänger-Themen 15
B illegal start of expression Java Basics - Anfänger-Themen 6
S illegal start of expression Java Basics - Anfänger-Themen 2
C itemStateChanged beim Start aufrufen? Java Basics - Anfänger-Themen 9
W Start-Probleme mit externen Bibliotheken / JAR-Bildung Java Basics - Anfänger-Themen 2
W Java Web Start das richtige? Java Basics - Anfänger-Themen 11
Y Applet start probleme Java Basics - Anfänger-Themen 2
C String mit Start und Endposition durchsuchen? Java Basics - Anfänger-Themen 9
B Start von CD Java Basics - Anfänger-Themen 6
C Start mit Parameter Java Basics - Anfänger-Themen 12
L illegal start of expression? Java Basics - Anfänger-Themen 19
G Einen Thread starten mit start(), wieso? Java Basics - Anfänger-Themen 7
A Start Problem! Java Basics - Anfänger-Themen 6
W Fehlermeldung beim start des Tomcat Java Basics - Anfänger-Themen 4
F Einem Array Werte zuweisen. (illegal start of expression) Java Basics - Anfänger-Themen 4
J Fehlersuche - illegal start of expression Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben