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);
}
1 Antwort
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
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.
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?
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#mjd51d5220468ee4a1f2a07b6796bb393b
Mehr kann ich dir leider nicht sagen, ohne den Code zu sehen.
Ja habs danke :D
sorry kann den code nicht preisgeben, er ist zu lang und ist ein betriebsgeheimnis sozusagen xD
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.
Statt
selectedFileName.equals("")
kann man auch
selectedFileName.isEmtpy()
nehmen.
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-equalsstring
gut und hast du auch ein beispiel wie ich das in eine methode packe :D