Programm neu starten ?

Status
Nicht offen für weitere Antworten.

0001001

Bekanntes Mitglied
Hallo Leute,

folgendes Problem:
Ich hab ein Menu, in dem ich dem Benutzer erlaube, die Sprache des Programms festzulegen. Anschließend muss das Programm neu gestartet werden, um die Sprache zu anzuwenden.

Nur: Wie startet man eine Anwendung neu?

Folgende Lösungen hab ich gefunden:
Code:
public static void restart(String[] args){
    main(args);
    System.exit(0);
}
Scheint mir noch die bessere der beiden Lösungen zu sein, da plattformunabhängig.




Code:
Runtime r = Runtime.getRuntime();
		String file = null;
		if (System.getProperty("os.name").contains("Windows"))
			file = "start.bat";
		else
			file = "start.sh";
		try
		{
			r.exec(System.getProperty("user.dir") + File.separator + file);
			System.exit(0);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
Bäh! Die Lösung gefällt mir auf Grund des Skriptgefummels gar nicht.

Wie macht man es richtig?
 

0001001

Bekanntes Mitglied
maki hat gesagt.:
Wenn man es richtig macht würde die Anwendung nicht neu gestartet werden nur weil sich die Sprache ändert.
Das denke ich schon. Wenn sich die Labels auf den Buttons ändern usw. verschieben sich u.U. die Größenverhältnisse der Komponenten und es kann zu häßlichen Überlagerungen kommen.

Oder reicht hier ein einfaches pack() im JFrame und das wieder anzupassen?
 
M

maki

Gast
>>
Oder reicht hier ein einfaches pack() im JFrame und das wieder anzupassen?

Kann ich dir nicht sagen, aber es ist sehr seltsam eine Anwendung wegen der Änderung der Sprache neu zu starten ;)
 

0001001

Bekanntes Mitglied
Naja wenn du dir das relativ große Videotool ProjectX ansiehst... die starten auch neu wenn sich die Sprache ändert.
 
M

maki

Gast
Hab noch nie etwas von ProjectX gehört.

Sieh dir doch die Sourcen von ProjectX an, wenn du das auch so machen willst.
 

thE_29

Top Contributor
Eine Startbat oder start sh schreiben!
Wo du auf den return Wert abfragst.

Bei einer bat würde es ungefähr so aussehen

:start
java -jar datei.jar
if %errorlevel% neq 2 goto start

Solange du also kein System.exit(2) machst, wird es immer wieder neu gestartet!
 
S

SlaterB

Gast
wäre es nicht schlauer, NUR bei System.exit(2) oder noch besser System.exit(2564790) neuzustarten?
 

FArt

Top Contributor
Nach Sprachwechsel einen Programmstart durchführen zu müssen ist schlichtweg schlecht implementiert bzw. designt.

In der Regel reicht es das Fenster zu invalidieren und neu zeichnen zu lassen. Oder einfach altes Fenster schließen, neues aufmachen.

Die System.exit-Variante ist mehr als von hinten durch die Brust ins Auge...
 

0001001

Bekanntes Mitglied
Ok, zwei Anmerkungen/Fragen:

1. Die Lösung finde ich nicht elegant, da auf externe Dateien zurückgegriffen werden muss. Aber wenns wirklich nicht anders geht...

2. Werden bei einem System.exit() die verwendeten Ressources freigegeben, Sockets geschlossen, Streams geschlossen... ? Oder killt System.exit() einfach das Programm?
 

0001001

Bekanntes Mitglied
@FArt:
Ich will nicht zwingend neu starten =). Wenns ohne geht, dann mache ich das.

Nur wie wie revalidiert man die gesamte Programmoberfläche?

Eine Liste mit allen Komponenten führen und bei einer Sprachänderung auf allen Komponenten revalidate() aufrufen?
 

FArt

Top Contributor
0001001 hat gesagt.:
Nur wie wie revalidiert man die gesamte Programmoberfläche?
Nachdem ein JFrame ja auch nur eine Swing-Komponente ist, würde ich davon ausgehen, dass er die Methode invalidate() ausführen kann.
 

0001001

Bekanntes Mitglied
Ok langsam,

Wenn ich mit
Locale.setDefault("de","DE");
die Sprache festlege und dann
jframe.invalidate();
ändert sich gar nichts.

Denk das liegt daran, dass das setDefault für die JVM gilt und diese erst neu gestartet werden muss, richtig?

Aber wie tauscht man sonst alle Strings aus?
 
G

Guest

Gast
Folgendes:

frame.invalidate();
frame.validate();
frame.repaint();
 
G

Guest

Gast
Eleganter ist es die Komponenten auf ein JPanel zu packen, nicht auf ein JFrame. Oder mindestens jframe.getContentPane() als Container der Komponente benutzen. Dann könnte man :

panel.revalidate();
panel.repaint();

oder wenn die frame.getContaintPane() die Komponente beinhaltet:

frame.getContaintPane().invalidate();
frame.getContaintPane().validate();
frame.getContaintPane().repaint();
 

musiKk

Top Contributor
0001001 hat gesagt.:
Denk das liegt daran, dass das setDefault für die JVM gilt und diese erst neu gestartet werden muss, richtig?
Wenn du die JVM neustartest, dann ist ja eh wieder der alte Wert geladen. Die Einstellung gilt nur für die aktuelle Instanz der VM und ändert keine Systemeinstellungen: Sets the default locale for this instance of the Java Virtual Machine. This does not affect the host locale.
 

0001001

Bekanntes Mitglied
musiKk hat gesagt.:
Wenn du die JVM neustartest, dann ist ja eh wieder der alte Wert geladen. Die Einstellung gilt nur für die aktuelle Instanz der VM und ändert keine Systemeinstellungen:

Jaaaaaa, natürlich speichere ich den Wert zuvor in ne Datei und les diese beim Starten aus und setze dann die Sprache.[/quote]
 

FArt

Top Contributor
0001001 hat gesagt.:
Jaaaaaa, natürlich speichere ich den Wert zuvor in ne Datei und les diese beim Starten aus und setze dann die Sprache.

Was für ein Umstandskrämer...

Mal nachgedacht: wenn der Default der Locale verändert wird, wird er dann beim neu pinseln von den betroffenen Komponenten in diesem Moment neu ausgewertet?

Hast du schon mal die Tutorials, die ich verlinkt hatte, intensivst angeschaut?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
A Programm will nicht starten... Allgemeine Java-Themen 7
Hoppelmann JAR mit Libaries und Natives vom Programm aus starten Allgemeine Java-Themen 5
C Java Programm über SSH starten Allgemeine Java-Themen 16
Jackii Java Programm aus anderen Java Programm starten Allgemeine Java-Themen 20
G Java Programm aus Java Programm starten Allgemeine Java-Themen 6
K Programm mit verschiedenen Parametern starten Allgemeine Java-Themen 2
T Externes Programm auf anderem Bildschirm starten Allgemeine Java-Themen 3
F Externes Programm starten, Speicheraufwändig Allgemeine Java-Themen 7
E Programm von Main Methode starten Allgemeine Java-Themen 9
T Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 13
J Eclipse Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 14
M Java Programm als Dienst starten... Allgemeine Java-Themen 4
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
E Zweites Java Programm sichtbar starten Allgemeine Java-Themen 4
C Name einlesen und Programm starten Allgemeine Java-Themen 2
V Java-Programm automatisch starten Allgemeine Java-Themen 2
M Wie Java-Programm über Batch-file starten? Allgemeine Java-Themen 8
G Java- Programm mit bat- Datei starten Allgemeine Java-Themen 16
J Externes Programm starten und stoppen (Linux) Allgemeine Java-Themen 3
M Programm schließen und wieder neu starten Allgemeine Java-Themen 9
G weiteres Java Programm vom Applet aus starten? Allgemeine Java-Themen 9
J Programm unter Linux starten Allgemeine Java-Themen 3
G MacOS X - Programm als Admin starten Allgemeine Java-Themen 7
B Externes Programm starten - Konsolenausgabe anzeigen lassen? Allgemeine Java-Themen 2
L Programm läßt sich wegen Java unter Linux nicht starten Allgemeine Java-Themen 4
P Externes Programm starten und beeinflussen Allgemeine Java-Themen 11
D Ich ikann kein Java-Programm starten Allgemeine Java-Themen 10
padde479 Externes Programm starten Allgemeine Java-Themen 7
W Programm starten unter Linux Allgemeine Java-Themen 10
T Mit java externes Programm starten Allgemeine Java-Themen 4
A Anwendung starten und beenden von einem anderen programm Allgemeine Java-Themen 5
D FindBugs oder CheckStyle aus Java-Programm starten Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
V java programm bzw. teilprogramm automatisiert starten Allgemeine Java-Themen 3
G Jar aus Java-Programm starten Allgemeine Java-Themen 4
E Programm lässt sich nicht starten ! Allgemeine Java-Themen 16
L java programm läßt sich von website nicht starten. Allgemeine Java-Themen 6
L linux befehl aus java programm starten Allgemeine Java-Themen 7
Y Aus einem Java Programm andere (Exe-)Programme starten Allgemeine Java-Themen 3
G UML Programm für Eclipse Starten Allgemeine Java-Themen 3
S ausführbare Datei aus Java-Programm starten Allgemeine Java-Themen 2
L Windows-Anwendung aus Java-Programm starten Allgemeine Java-Themen 2
M externes Programm aus Java heraus starten Allgemeine Java-Themen 2
P Programm selbst starten lassen Allgemeine Java-Themen 2
S Programm starten mit Runtime aktuelles Verzeichnis wechseln Allgemeine Java-Themen 7
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14

Ähnliche Java Themen


Oben