Frame "on-the-fly" auf andere Sprache umstellen

Status
Nicht offen für weitere Antworten.
S

scooterJava

Gast
Ich versuche seit Tagen, Java davon zu überzeugen, auf Knopfdruck die Sprache des Frames umzustellen.

Dazu habe ich folgendes Testprogramm:

Code:
package test;


import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;


public class Test
	extends JFrame
	implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private static ResourceBundle messages;
	private static String language = "en";
	private static String country = "US";
	private static JPanel panel = new JPanel();

	private static Locale currentLocale = new Locale( language, country );

	static public void main( String[] args )
	{
		Test window = new Test();
		window.setLocationRelativeTo( null );
		window.setDefaultCloseOperation( EXIT_ON_CLOSE );
		window.pack();
		window.setVisible( true );
	}

	public Test()
	{
		messages = ResourceBundle.getBundle( "Test.Test", currentLocale );
		panel.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
		JPanel panelForm = new JPanel();
		JButton btnDE = new JButton( messages.getString( "Deutsch" ) );
		JButton btnEN = new JButton( messages.getString( "Englisch" ) );
		btnDE.addActionListener( this );
		btnEN.addActionListener( this );
		panelForm.add( btnDE );
		panelForm.add( btnEN );
		panel.add( panelForm );
		add( panel );
		System.out.println( messages.getString( "Deutsch" ) );
		System.out.println( messages.getString( "Englisch" ) );
	}

	public void actionPerformed( ActionEvent ae )
	{
		String action = ae.getActionCommand();
		String[] actions = { messages.getString( "Deutsch" ),
			messages.getString( "Englisch" ) };
		LinkedList<String> actionslist = new LinkedList<String>( Arrays
			.asList( actions ) );
		int langIndex = 1 + actionslist.indexOf( action );

		switch( langIndex )
		{
			case 1: // Deutsch
				switchLanguage( "de", "DE" );
				break;
			case 2: // Englisch
				switchLanguage( "en", "US" );
				break;
		}

	}

	private void switchLanguage( String language, String country )
	{
		panel.setLocale( new Locale( language, country ) );
		System.out.println( panel.getLocale() );
		messages = ResourceBundle.getBundle( "Test.Test", currentLocale );
		panel.updateUI();
	}
}

Die Properties-Dateien liegen korrekt vor; syntaktisch ist auch alles in Ordnung. Tatsächlich setzt Java die neue Locale bei "... getLocale()" am Codeende. "getBundle()" wird dann offenbar auch ausgeführt, zeigt aber keine Wirkung. Aus Verweiflung habe ich noch ein "updateUI()" angefügt; aber auch "repaint()" zeigt keine Wirkung.

Ich kann mir kaum vorstellen, dass eine so weit verbreitete Entwicklerplattform wie Java keine vernünftige kurze Sprachumstellung bietet. Im Netz finde ich nur Aussagen wie "So müsste es gehen" bis "Geht nicht, wenn du Java nicht neu startest oder jeder Komponente selber einen neuen Text zuweist". Komme ich wirklich bei einer Anwendung wie Java nicht umhin, etwas zu schreiben wie:

Code:
void switchLanguage( ...)
{
	// ...
	btnDE.setText( messages.getString("Deutsch"));
	// usw.
}

Das haben ja andere Entwicklungsumgebungen wie Trolltechs Qt viel besser gelöst!
 
S

SlaterB

Gast
tja, sei mal froh, dass es überhaupt Swing gibt und du nicht noch viel mehr zu meckern hast ;)

setText() einzeln aufzurufen wäre natürlich keine Lösung, stattdessen müsste das Framework um diese Funktionalität intelligent erweitert werden,
evtl. sowas wie hier
http://www.joconner.com/javai18n/articles/Multilingual.html


kann nicht genau sagen, was Swing oder andere Libraries (SWT?) da schon bieten
 
S

scooterJava

Gast
Vielen Dank! Dies scheint genau das zu sein, was ich solange gesucht habe. Werds umgehend ausprobieren.
 
S

scooterJava

Gast
Für die Leute, die es gerne funktionierend sehen möchten, hat Herr Connor mir etwas unter die Arme gegriffen.

So gehts:

Code:
package test;


import java.awt.FlowLayout;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;


public class Test
extends JFrame
implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private static ResourceBundle messages;
	private static String language = "en";
	private static String country = "US";
	private static JPanel panel = new JPanel();
	private static Locale currentLocale = new Locale( language, country );

	private final JButton btnDE;
	private final JButton btnEN;

	static public void main( String[] args )
	{
		Test window = new Test();
		window.setLocationRelativeTo( null );
		window.setDefaultCloseOperation( EXIT_ON_CLOSE );
		window.pack();
		window.setVisible( true );
	}

	public Test()
	{
		messages = ResourceBundle.getBundle( "Test.Test", currentLocale );
		panel.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
		JPanel panelForm = new JPanel();
		btnDE = new JButton( messages.getString( "Deutsch" ) );
		btnEN = new JButton( messages.getString( "Englisch" ) );
		btnDE.addActionListener( this );
		btnEN.addActionListener( this );
		panelForm.add( btnDE );
		panelForm.add( btnEN );
		panel.add( panelForm );
		add( panel );
		System.out.println( messages.getString( "Deutsch" ) );
		System.out.println( messages.getString( "Englisch" ) );
	}

	public void actionPerformed( ActionEvent ae )
	{
		String action = ae.getActionCommand();
		String[] actions = { messages.getString( "Deutsch" ),
			messages.getString( "Englisch" ) };
		LinkedList<String> actionslist = new LinkedList<String>( Arrays
		.asList( actions ) );
		int langIndex = 1 + actionslist.indexOf( action );

		switch( langIndex )
		{
			case 1: // Deutsch
				switchLanguage( "de", "DE" );
				break;
			case 2: // Englisch
				switchLanguage( "en", "US" );
				break;
		}

	}

	private void switchLanguage( String language, String country )
	{
		currentLocale = new Locale( language, country );
		messages = ResourceBundle.getBundle( "Test.Test", currentLocale );
		btnDE.setText( messages.getString( "Deutsch" ) );
		btnEN.setText( messages.getString( "Englisch" ) );
		panel.updateUI();
	}

}

Der Code ist natürlich noch zu optimieren:
* Die hartkodierten Strings sollten vermieden werden.
* Ein Listener reicht, wenn man die Sprachauswahl mit einer JCOmboBox gestaltet.
* Den verwirrenden Zugriff, den ich in actionPerformed() auf die Labels nehme, sollte man besser duch getSource() ersetzen:

Code:
Object action = ae.getSource();
if( action == btnDE ) { ... }
if( action == btnEN ) { ... }

Ausgaben:


url]


url]
[/img]
 
S

scooterJava

Gast
Für die Leute, die es gerne funktionierend sehen möchten, hat Herr Connor mir etwas unter die Arme gegriffen.

So gehts:

Code:
package test;


import java.awt.FlowLayout;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;


public class Test
extends JFrame
implements ActionListener
{
	private static final long serialVersionUID = 1L;
	private static ResourceBundle messages;
	private static String language = "en";
	private static String country = "US";
	private static JPanel panel = new JPanel();
	private static Locale currentLocale = new Locale( language, country );

	private final JButton btnDE;
	private final JButton btnEN;

	static public void main( String[] args )
	{
		Test window = new Test();
		window.setLocationRelativeTo( null );
		window.setDefaultCloseOperation( EXIT_ON_CLOSE );
		window.pack();
		window.setVisible( true );
	}

	public Test()
	{
		messages = ResourceBundle.getBundle( "Test.Test", currentLocale );
		panel.setLayout( new FlowLayout( FlowLayout.RIGHT ) );
		JPanel panelForm = new JPanel();
		btnDE = new JButton( messages.getString( "Deutsch" ) );
		btnEN = new JButton( messages.getString( "Englisch" ) );
		btnDE.addActionListener( this );
		btnEN.addActionListener( this );
		panelForm.add( btnDE );
		panelForm.add( btnEN );
		panel.add( panelForm );
		add( panel );
		System.out.println( messages.getString( "Deutsch" ) );
		System.out.println( messages.getString( "Englisch" ) );
	}

	public void actionPerformed( ActionEvent ae )
	{
		String action = ae.getActionCommand();
		String[] actions = { messages.getString( "Deutsch" ),
			messages.getString( "Englisch" ) };
		LinkedList<String> actionslist = new LinkedList<String>( Arrays
		.asList( actions ) );
		int langIndex = 1 + actionslist.indexOf( action );

		switch( langIndex )
		{
			case 1: // Deutsch
				switchLanguage( "de", "DE" );
				break;
			case 2: // Englisch
				switchLanguage( "en", "US" );
				break;
		}

	}

	private void switchLanguage( String language, String country )
	{
		currentLocale = new Locale( language, country );
		messages = ResourceBundle.getBundle( "Test.Test", currentLocale );
		btnDE.setText( messages.getString( "Deutsch" ) );
		btnEN.setText( messages.getString( "Englisch" ) );
		panel.updateUI();
	}

}

Der Code ist natürlich noch zu optimieren:
* Die hartkodierten Strings sollten vermieden werden.
* Ein Listener reicht, wenn man die Sprachauswahl mit einer JCOmboBox gestaltet.
* Den verwirrenden Zugriff, den ich in actionPerformed() auf die Labels nehme, sollte man besser duch getSource() ersetzen:

Code:
Object action = ae.getSource();
if( action == btnDE ) { ... }
if( action == btnEN ) { ... }

Ausgaben:

27197.png


27198.png
 

Wildcard

Top Contributor
Das dieser Code zu nichts zu gebrauchen ist, sollte klar sein.
Das eigentliche Problem ist das hier:
Code:
btnDE.setText( messages.getString( "Deutsch" ) );
btnEN.setText( messages.getString( "Englisch" ) );
In einer komplexen GUI ist das aus offensichtlichen Gründen kein praktikabler Ansatz.
Die Alternative besteht in einem erstmal nur in einem übermäßig komplexen Notification Konstrukt das sich über die ganze Anwendung erstreckt.
Meine ehrliche Meinung dazu:
viel Lärm um nichts, denn die Sprache stellt man genau einmal ein (üblicherweise automatisch) und da ist ein Neustart zu verkraften.
 
S

scooterJava

Gast
Auf einen bereits geschlossenen Thread noch was zu schreiben, ist schon merkwürdig ...

Zur Praktikablität:
Wie vielleicht aufgefallen ist, ist dies eine Testanwendung. Primär sollte es nur darum gehen, wie ein gestelltes Problem gelöst werden kann. Nach Codeschönheit wurde nicht gefragt und Kritik habe ich zum Schluss ja auch selber angebracht.

Zur Einsatzmöglichkeit:
Immer wieder wird behauptet, dass eine on-the-fly-Sprachumstellung, wie sie hier im Test veranschaulicht wird, unnütz ist -- man könnte die Anwendung nach Umstellung in den Optionen schließlich wieder neu starten. Dazu sind zwei Dinge zu sagen: Zum einen ist es in der heutigen Zeit ein Schlag ins Gesicht der Usability und in den des Anwenders, dass er das Programm neu starten muss und dabei vielleicht bisherige Eingaben verliert, bloß weil er -- vielleicht aus Verständnisgründen -- mal kurz die GUI in einer anderen Sprache lesen will; zum anderen wird vergessen, wie sinnvoll solch eine Möglichkeit bei shared applications sein kann: Wenn online mehrere Anwender ein Programm nutzen, kann es für sie eine Erleichterung sein, dass jeder das Programm in seiner Sprache bedienen kann. Es soll tatsächlich Programmierer geben, die nicht nur eindimensional denken ...
 

Wildcard

Top Contributor
Dann warte mal ab wie die Sache in einer echten Applikation aussieht, dann sprechen wir uns nochmal :wink:
 
S

scooterJava

Gast
Und schon wieder auf einen geschlossenen Thread geantwortet ...

So nett ein Meinungsaustausch auch sein kann, aber sind dir die Forenregeln klar?
 

Wildcard

Top Contributor
Der Thread ist nicht geschlossen (das wäre meine Aufgabe, oder die eines anderen Mods), sondern als erledigt markiert.
Sprich: Dein Problem betrachtest du als gelöst, was natürlich nicht ausschließt die gefundene Lösung zu kommentieren.
 

Illuvatar

Top Contributor
Ich denke mal, Wildcard als Moderator wird die Forenregeln kennen...

Mal ein Beispiel: Ein Benutzer schreibt in einem Forum, dass er gerne ein iPhone kaufen würde, aber ihm 5 Cent fehlen. Er findet dann selbst die Lösung: Er bringt den Präsidenten der USA um und erleichtert ihn um sein Geld. Der Thread ist abgehakt. Aber gäbe es nicht vielleicht bessere Lösungen auf die man hinweisen sollte?

@topic: Ich kann bei Interesse auch Code von mir posten, ich hab sowas schonmal gemacht. Da verwendet man dann statt dem JComponent das man normal verwenden würde eine Unterklasse (LLabel, LButton, LProgressBar, ...) die sich bei einem Manager als Listener registriert und nur einen resourceString kennt. Wenn die Locale vom Manager geändert wird, werden alle Listener benachrichtigt und holen vom Manager, der das ResourceBundle kennt, die entsprechende neue, zu ihrem resourceString passende Beschriftung.
Das Gute daran: Man kann die neuen Components genau verwenden wie die alten und muss sich überhaupt nicht mehr um die Sprache kümmern. Wenn dann im LanguageChooser eine andere Sprache gewählt wird, wird alles automatisch aktualisiert.
 

Wildcard

Top Contributor
Illuvatar hat gesagt.:
Da verwendet man dann statt dem JComponent das man normal verwenden würde eine Unterklasse (LLabel, LButton, LProgressBar, ...) die sich bei einem Manager als Listener registriert und nur einen resourceString kennt. Wenn die Locale vom Manager geändert wird, werden alle Listener benachrichtigt und holen vom Manager, der das ResourceBundle kennt, die entsprechende neue, zu ihrem resourceString passende Beschriftung.
Das Gute daran: Man kann die neuen Components genau verwenden wie die alten und muss sich überhaupt nicht mehr um die Sprache kümmern. Wenn dann im LanguageChooser eine andere Sprache gewählt wird, wird alles automatisch aktualisiert.
Genau sowas ist eine sinnvolle Lösung. Wichtig ist bei soetwas, das man zusätzlich ein Interface anbietet um keine Vererbungshierarchie vorzuschreiben.
Bei zwei Dingen wird's allerdings sehr hässlich:
-SWT, weil man von vielen Widgets nicht erben darf
-alles Selbstgezeichnete
 

Illuvatar

Top Contributor
Ist ein bisschen viel ums hier direkt zu posten, ich hab es hier hochgeladen.

Kleiner Beispielcode:
Test.java
Code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import javax.swing.*;

import de.illu.i18n.*;

public class Test extends LFrame
{
    private static List<Locale> locales = new ArrayList<Locale>();
    static{
        locales.add(Locale.GERMANY);
        locales.add(Locale.US);
    }
    public Test(String resource, I18NManager man)
    {
        super(resource, man);
        setLayout(new BorderLayout(5, 5));
        final LProgressBar pb = new LProgressBar(man, "progress",
                SwingConstants.HORIZONTAL, 0, 100);
        add(pb, BorderLayout.CENTER);
        JPanel buttons = new JPanel();
        buttons.setLayout(new BoxLayout(buttons, BoxLayout.X_AXIS));
        LanguageChooser chooser = new LanguageChooser("language", man, locales);
        buttons.add(chooser);
        buttons.add(Box.createHorizontalStrut(75));
        LButton b1 = new LButton("next", man);
        buttons.add(b1);
        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                pb.setValue(pb.getValue() + 10);
            }
        });
        buttons.add(Box.createHorizontalStrut(5));
        LButton b2 = new LButton("exit", man);
        b2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
        buttons.add(b2);
        add(buttons, BorderLayout.SOUTH);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String... args)
    {
        I18NManager man = new I18NManager("test");
        new Test("title", man);
    }
}
test_de.properties
Code:
title=Testtitel
progress=Berechnung der Weltformel...
language=Sprache wählen
next=Weiter
exit=Beenden
test_en.properties
Code:
title=Test Title
progress=Doing some stuff
language=Select Language
next=Next
exit=Exit
 
Zuletzt bearbeitet:
G

Guest

Gast
Mal ne kurze Frage, prinzipiell ist hier alles erklärt, aber wie hast du bei deiner Lösung die Sache
mit den Accelerators gelöst?? Das würde mich wirklich mal interessieren, weil ich hab mittlerweile mir selber so ein I18n-Framework gebastelt das sehr schön funktioniert, allerdings bleiben die Accelerator im Menü (STRG+G -> CTRL+G) weiterhin in der zuerst gestarteten Locale und das gefällt mir nicht... wäre um eine Lösung dankbar.

Gruß

DarkLoG
 
S

scooterJava

Gast
Damals habe ich keine Hotkeys nach den Locales neu belegt. Da es nur ein Testprogramm war, habe ich einfach die Art des Betriebssystems abgefragt (Windows oder nicht) und je nach einer der beiden Möglichkeiten Standard-Hotkeys für die Minimal-Menüs vergeben, also z. B. Alt-F4 unter Windows fürs Beenden (bei Linux dann glaub ich Strg+Alt+Esc).

Wenn ich den Code noch recht in Erinnerung habe, muss die Neubelegung per Hand in der gleichen Funktion erfolgen, welche die neue Locale festlegt. Am besten ein Switch-Konstrukt mit den Cases der gewählten Locale und dann die Acceleratoren neu zuordnen.

Java-Programmierer halten einen solchen on-the-fly-Wechsel oft nicht für nötig, und Java selber legt dem Programmierer hier die eine oder andere Hürde in den Weg. Doch solch ein Wechsel kann bei bestimmten Programmen durchaus sinnvoll sein. Beispielsweise kann in einem Multiplayer-Onlinespiel jeder Spieler die Oberfläche in seiner gewünschten Sprache wählen, unabhängig von der Locale des installieren Betriebssystems. Vielleicht kommen die von Sun ja auch noch auf den Trichter, es hier mal einfacher zu machen ... (manches ist ja schon in Java 6 besser geworden).
 
G

Guest

Gast
Alles klar danke, ich werd mal weiterschauen wie ich die Accelerators auch noch davon überzeuge, dass ich jetzt ne andere Sprache will, zur Not mach ichs per Hand. Den Rest hab ich jetzt eigentlich ganz schön automatisiert. Ich bin Java-Programmierer und halte es für sehr sinnvoll, dass man die Sprache on the fly umschalten kann, insbesondere da ich an einem Programm arbeite, dass Live-Daten ständig anzeigt und diese sollten auch ständig überwacht werden, also neustarten ist in diesem Fall eine sehr schlechte Lösung. Außerdem gibt es viele Länder in denen mehrere Sprachen gesprochen werden (Schweiz, Belgien etc.) und wechselende Benutzer/Beobachter können so ganz einfach in die gewünschte Sprache schalten.
Nächster Punkt - ein Kunde aus Russland ruft an er hat ein Problem, ich gehe per VNC auf seinen Rechner schaue mir die Sache an und bumm alles russisch, neustarten löst das Problem vielleicht automatisch, daher ist das keine vernünftige Option, also zack die Sprache auf Deutsch gestellt und das Problem analysiert...

Gruß

DarkLoG
 
S

scooterJava

Gast
Der russische Kunde ist natürlich ein gutes Argument gegen diejenigen, die einen Sprachenwechsel on-the-fly unter Java für Quatsch halten. Im Gegensatz zu (schreibfaulen?) Programmierern sehen dies Anwender glücklicherweise immer anders, denn sie sind es ja, die mit den Programmen zu kämpfen haben ...
 

Wildcard

Top Contributor
Ist doch lächerlich... schreibfaule Programmierer :roll:
Diejenigen von uns, die die Programmierung nicht nur als Hobby betreiben, richten sich nach den Anforderungen an die Software. Ist ein on the fly Language Change nicht enthalten, wird er nicht eingebaut, weil das viel zu teuer ist.
Würdest du die Entwickler bezahlen, würdest du dir ein solches Gimmik auch 4 mal überlegen bevor du das Requirement auflistest.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
T IllegalComponentStateException The Frame is Displayable AWT, Swing, JavaFX & SWT 8
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
T Frame öffnet nicht AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M Internal Frame in den vordergrund AWT, Swing, JavaFX & SWT 4
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
P Frame friert ein AWT, Swing, JavaFX & SWT 6
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
B Frame always on top nur auf anderem Frame AWT, Swing, JavaFX & SWT 9
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
C LookAndFeel Frame updated nicht vollständig AWT, Swing, JavaFX & SWT 9
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
Z Swing JTextfield auf Frame AWT, Swing, JavaFX & SWT 13
N Swing Frame mit GlassPane und Popup AWT, Swing, JavaFX & SWT 5
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
P Frame "always on top" und welche GUI? AWT, Swing, JavaFX & SWT 5
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
M erstes Frame wartet auf die Auswertung eines zweiten AWT, Swing, JavaFX & SWT 8
J Frame-Steuerelement AWT, Swing, JavaFX & SWT 2
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19
F Hintergrundbild im Frame AWT, Swing, JavaFX & SWT 11
S Zeichnen führt zu transparentem Frame AWT, Swing, JavaFX & SWT 6
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
B Frame im Frame? AWT, Swing, JavaFX & SWT 4
C WindowListener Frame AWT, Swing, JavaFX & SWT 8
P klassenübergreifendes Frame AWT, Swing, JavaFX & SWT 6
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
A Hintergrund von einem Frame ändern AWT, Swing, JavaFX & SWT 3
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
T Mehrere sich bewegende Objekte in einem Frame AWT, Swing, JavaFX & SWT 14
J "Warte Frame" AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben