Frage von Jibenni, 34

In Java public static void main neustarten auf knopfdruck/ nochmals durchlaufen?

Habe eine Datei ausgelesen und daraus ein Grid(Benutzeroberfläche) erstellt. Nun habe ich den Button mit dem ich eine neue Datei mit dem selben aufbau ausgewählt habe als neue Datei (bzw File) und möchte das Grid mit den alten Daten(File) durch die neuen Daten(File) aktualisieren.

Ich hab den prozess ja bereits gemacht und wollte fragen ob ich einfach den Java public static void main erneut durchlaufen kann mit der neuen File?

public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException, TransformerException, ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {
    
    if (selectedFileName == "") { //selectedFileName ist meine neue Datei
        File file = new File("C:\\Users\\benjamin.leipnitz\\Documents\\rahmen.xml");
        documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilder = documentBuilderFactory.newDocumentBuilder();
        document = documentBuilder.parse(file);

    } else {
        File selectedFileUpdate = new File(selectedFileName);
        documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilder = documentBuilderFactory.newDocumentBuilder();
        document = documentBuilder.parse(selectedFileUpdate);
    }
Antwort
von Eismensch, 20

Wir müssen hier erstmal Ordnung schaffen:

ob ich einfach den Java public static void main erneut durchlaufen

Nein das geht nicht. Diese Main-Methode ist nämlich mehr oder minder dein gesamtes Programm.(sehr abstrakt gesehen)

Was du machen könntest: Eine Methode schreiben, welche auf eine Nutzereingabe reagiert und dann deinen Algorithmus ausführt. Du lagerst also deinen jetzigen Code in eine separate Funktion aus. Diese kannst du so oft aufrufen wie du möchtest ;)


Hier noch eine kleine Sachen:

if (selectedFileName == "")


Hier versuchst du wohl zu testen ob der String "selectedFileName" leer ist. Strings werden in Java nicht mit "==" verglichen! Hierfür ist die "Equals"  Methode zu gebrauchen.


Hier gibt es ein gutes Beispiel warum das so ist: http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java


Kommentar von Jibenni ,

gut und hast du auch ein beispiel wie ich das in eine methode packe :D

Kommentar von Eismensch ,
public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException, TransformerException, ClassNotFoundException, UnsupportedLookAndFeelException, InstantiationException, IllegalAccessException {


//Irgendeine Art der Nutezreingabe

tuCooleSachen(Nutzereingabe);

private void tuCooleSachen(String selectedFileName) {

if (selectedFileName.equals("") { //selectedFileName ist meine neue Datei
File file = new File("C:\\Users\\benjamin.leipnitz\\Documents\\rahmen.xml");
documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(file);

} else {
File selectedFileUpdate = new File(selectedFileName);
documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilder = documentBuilderFactory.newDocumentBuilder();
document = documentBuilder.parse(selectedFileUpdate);
}
}

}

Für etwas genaueres fehlt mir der Kontext. Aber so in etwa könnte es aussehen. 

Kommentar von PWolff ,

Habt ihr schon Methoden und ihre Aufrufe im Unterricht gehabt?

Kommentar von Eismensch ,

Wenn sie bereits Factories nutzen, müsste das schon lang geschehen sein.

Kommentar von Jibenni ,

also ich hab jetzt von 

der main eine neue public static void update erstellt

die main springt dann zu der update, wie kann ich das machen das er den update nochmal durchläuft wenn ich einen button drücke?

Kommentar von Eismensch ,

Hmm tut mir leid, hier habe ich deinen Wissenstand etwas falsch eingeschätzt.

Machen wir es Schrittweise.

Du hast eine GUI. In dieser hast du dann einen Button zum aktualisieren. Je nachdem wie deine GUI aufgebaut ist, geht das ganze etwas anders, aber im Grundprinzip brauchst du einen Actionlistener für de Button.

->http://www.java-tutorial.org/actionlistener.html

Über diesen Listener kannst du dann deine neue Methode aufrufen.

Diese muss nebenbei nicht unbedingt "static" sein.

->http://www.gailer-net.de/tutorials/java/Notes/chap25/ch25_13.html
->http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_05_003.htm#mjd51d522046...

Mehr kann ich dir leider nicht sagen, ohne den Code zu sehen.

Kommentar von Jibenni ,

Ja habs danke :D

sorry kann den code nicht preisgeben, er ist zu lang und ist ein betriebsgeheimnis sozusagen xD

Kommentar von Eismensch ,

Den Code sollte man auch nicht hier veröffentlichen ;)

Dafür gibt es sowas wie z.B. https://github.com/

Und "Betriebsgeheimnis" würde ich es nicht nennen. Closed-Source ist vor allem, wenn man gerade lernt, der falsche Weg. Nichts was du da machst ist neu (Fast jedes Problem wurde bereits von jemand anderen mal gelöst^^) und ohne den Code zu kennen ist es schwer dir zu helfen. Am Anfang macht man nämlich viele Fehler die man einfach nicht erkennt, weil einem die Erfahrung fehlt.

Kommentar von Johannes3112 ,

Statt

selectedFileName.equals("")

kann man auch

selectedFileName.isEmtpy()

nehmen.

Kommentar von Eismensch ,

Kann man auch machen, mann muss dann jedoch die Unterschiede zwischen .isEmpty() und .equals(s) beachten. Hierzu hatte ich mal eine schöne Erklärung auf Stackoverflow gefunden, welche ich einfach mal zitiere:

"The main benefit of "".equals(s) is you don't need the null check (equals will check its argument and return false if it's null), which you seem to not care about. If you're not worried about s being null (or are otherwise checking for it), I would definitely use s.isEmpty(); it shows exactly what you're checking, you care whether or not s is empty, not whether it equals the empty string"

Quelle: http://stackoverflow.com/questions/3321526/should-i-use-string-isempty-or-equals...

Keine passende Antwort gefunden?

Fragen Sie die Community