Locale mit JCombobox umschalten

Status
Nicht offen für weitere Antworten.

dudu3k

Aktives Mitglied
hallo,

ich habe ein program geschrieben, und die Umschaltung der Locale geht nicht. Zu diesem Bug habe ich nun einen Auszug erstellt. Wenn man die Sprache in der JCombobox umschaltet, dann gehen die Buttons irgendwie nicht mehr!? wer weiss Rat?

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.plaf.*;
import javax.swing.LookAndFeel.*;
import javax.swing.BorderFactory;
import javax.swing.plaf.basic.*;
import java.util.*;

public class ShockCfg extends JPanel implements ActionListener
{
   public JFrame vonbraun;
   public JPanel nix;
   static ResourceBundle txt;
   public JButton speicherButton, abbruchButton;
        public JRadioButton engBox, deuBox;
   public ButtonGroup langBoxes;
   public GridBagLayout gb;
   public GridBagConstraints gbc;
   public JLabel langtext;
   public String[] langs;
   public JComboBox langlist;
   public JLabel langLabel;
   public JPanel vonbraunPanel;
   
   public void actionPerformed(ActionEvent a)
   {
      if(a.getActionCommand().equalsIgnoreCase(ShockCfg.txt.getString("ButtonButtonAbb")))
         System.exit(0);
      if(a.getActionCommand().equalsIgnoreCase(ShockCfg.txt.getString("ButtonButtonSave")))
      {
                        System.exit(0);
      }
   }

   public ShockCfg()
   {
      Locale sprache = Locale.getDefault();
      try
          {
         System.out.println(sprache.getLanguage());
         txt = ResourceBundle.getBundle("resources.MyTextResource", sprache);
      }
      catch ( MissingResourceException e )
      {
         System.err.println( e );
      }
      
      vonbraun = new JFrame();
      vonbraun.setLayout( new FlowLayout());
      vonbraunPanel = new JPanel();
      vonbraun.add(vonbraunPanel);
      vonbraunPanel.setBorder(BorderFactory.createLineBorder(Color.green));
      vonbraunPanel.setOpaque(true);
      nix = new JPanel();
      nix.setLayout(gb = new GridBagLayout());
      gbc = new GridBagConstraints();
      langtext = new JLabel(ShockCfg.txt.getString("ButtonLabelLang"));
      gbc.gridx = 0;
      gbc.gridy = 0;
      gbc.gridwidth = 1;
      gbc.gridheight = 1;
      nix.add(langtext, gbc);
      langLabel = new JLabel(ShockCfg.txt.getString("MainLabelLang"));
      String[] langs = {ShockCfg.txt.getString("MainDeuLang"), ShockCfg.txt.getString("MainEngLang")};
      langlist = new JComboBox(langs);
      langlist.setBorder(BorderFactory.createLineBorder(Color.green));
       langlist.setEditable(true);
      langlist.setOpaque(true);
      langlist.setMaximumSize(new Dimension(99, 33));
   gbc.gridx = 1;
   gbc.gridy = 0;
       nix.add(langlist);
      langlist.addItemListener(new ItemListener(){
         public void itemStateChanged(ItemEvent e) {
            if(e.getStateChange()==ItemEvent.SELECTED)
            {
               JComboBox cbe = (JComboBox)e.getItemSelectable();
               String str81 = (String)cbe.getSelectedItem();
               if(str81.contains("Englisch"))
               {
                  System.out.println("en");
                  Locale en = new Locale("EN");
                  setLoc(en);
               }
               if(str81.contains("German"))
               {
                  System.out.println("de");
                  Locale d = new Locale("DE");
                  setLoc(d);
               }
            }}});
      
      speicherButton = new JButton(ShockCfg.txt.getString("ButtonButtonSave"));
           speicherButton.setMnemonic(KeyEvent.VK_E);
      speicherButton.setRolloverEnabled(false);
      speicherButton.setBorder(BorderFactory.createCompoundBorder(
         BorderFactory.createLineBorder(Color.green),
         BorderFactory.createEmptyBorder(5,5,5,5)
      ));
      gbc.gridx = 5;
      gbc.gridy = 1;
      gbc.gridwidth = 1;
      gbc.gridheight = 1;
      nix.add(speicherButton, gbc);
      speicherButton.addActionListener(this);
          abbruchButton = new JButton(ShockCfg.txt.getString("ButtonButtonAbb"));
      abbruchButton.setMnemonic(KeyEvent.VK_A);
          abbruchButton.setSelected(true);
      abbruchButton.setRolloverEnabled(false);
      abbruchButton.setBorder(BorderFactory.createCompoundBorder(
         BorderFactory.createLineBorder(Color.green),
         BorderFactory.createEmptyBorder(5,5,5,5)
      ));
          gbc.gridx = 6;
      gbc.gridy = 1;
      gbc.gridwidth = 1;
      nix.add(abbruchButton, gbc);
          abbruchButton.addActionListener(this);
      vonbraun.getContentPane().add(nix);
      
      vonbraun.setSize(640,480);   //wo Groesse einstellen?
      vonbraun.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);   //EXIT_ON_CLOSE?
      vonbraun.setVisible(true);   //Fenster undursichtig
   }

   public static void setLoc(Locale loca)
   {
      Locale sprache = loca;
      JComponent.setDefaultLocale(sprache);
      Locale.setDefault(sprache);
      ShockCfg.txt = ResourceBundle.getBundle("resources.MyTextResource", sprache);
                System.out.println("errln");
   }
   
   public static void main(final String args[])
   {
      ShockCfg shock = new ShockCfg();
   }
}

Die Resourcen stehen im Ordner resources in MyTextResource.properties Dateien.

Code:
MainLabelLang=Sprache:
MainDeuLang=Deutsch
MainEngLang=Englisch
ButtonLabelLang=Sprache von ShockCfg:
ButtonRadioGer=Deutsch
ButtonRadioEng=Englisch
ButtonButtonSave=Speichern
ButtonButtonAbb=Abbrechen
WriteCfgDia1=Bitte waehlen sie das System Shock 2 Verzeichnis aus!
WriteCfgDia2=Auswaehlen
WriteCfgErr=Fehler beim Erstellen der Datei ShockCfg.cfg
ShockHelp=Hilfe:
RCCErrFehler=Fehler beim lesen der cam.cfg.
RICErrFehler=Fehler in der install.cfg! Falsche Sprache!
RICErrFehler3=Fehler beim lesen der install.cfg.
RSCErrFehler=Fehler beim lesen der shock.cfg.
RUCErrFehler=Waffenverschleiss zu klein oder zu gross!
RUCErrFehler2=user.cfg existiert nicht
RUCErrFehler6=lower spam min zu klein oder zu gross!
RUCErrFehler7=raise spam rand zu klein oder zu gross!
RickErrThr=Fehler Thread unterbrochen.
ShockPriHelp=Hilfe: java ShockCfg [help|xerxes|citadell|version]
WCCErrFehler=Fehler beim schreiben der cam.cfg.
WCCErrFehler2=Error
WICErrFehler=Fehler beim schreiben der Install.cfg.
WICErrFehler2=Dateifehler: install.cfg
WSCErrFehler=Fehler beim schreiben der Shock.cfg.
WSCErrFehler2=Dateifehler: Shock.cfg
WUCErrFehler=Error user.cfg
 
S

SlaterB

Gast
hmm, kannst du das näher beschreiben,
wieso gehen die Buttons nicht mehr, irgendwelche Exceptions oder sonstige Hinweise?

bei mir geht alles,

oder stört dich nur, dass sich die Sprache nicht ändert?
 

dudu3k

Aktives Mitglied
wie ich gesagt habe, wenn man de sprache auf englisch umstellt, gehen danach die buttons nicht mehr!
 
S

SlaterB

Gast
nunja, diese Beschreibung bringt eben nix,
da sie keinen Fehler vermuten läßt und nicht reproduzierbar ist,

nix zu machen
 

dudu3k

Aktives Mitglied
welche java version verwendest du?
ich hab die version b24 von java.net, vieleicht ist das ja ein bug.
 

dudu3k

Aktives Mitglied
von wo hast du das java?
bei mir tritt der fehler nämlich mit dem 1.5.0_12-b04 trotzdem auf! und das ist diesmal die version von sun!
 
S

SlaterB

Gast
es macht keinen Sinn hier über Versionen nachzudenken,
das ist normaler Code der überall normal läuft

meine ist wahrscheinlich normal von Sun, habe ich aber nicht selber geladen (auf der Arbeit)
 

dudu3k

Aktives Mitglied
eigentlich müsste bei dir der fehler auftretten, da meine java-version neuer ist als deine! kann sich dem problem vieleicht noch jemand annehmen, bei dem der fehler auftitt? ein kurzes post, falls der fehler nicht auftritt, wäre auch hilfreich!
big thx
 

Wildcard

Top Contributor
Natürlich geht das nicht mehr. Wie kommt man auch auf die Idee auf ein lokalisiertes Action Command zu prüfen das man nicht explizit setzt und dann mit dem Locale zu spielen? :autsch:
 

dudu3k

Aktives Mitglied
was? ich versteh nur bahnhof! :autsch:
was hab ich denn da falsch gemacht, und wie mahe ich es richtig?
 

Wildcard

Top Contributor
Benutz keine ActionCommands. Falls du davon aber nicht lassen kannst, dann setz sie explizit und koppel das nicht an die Resourcen.
 

dudu3k

Aktives Mitglied
ach so, ich dachte ich verwende die locale, die ich grade geändert hab im event!

muss wohl doch noch mal was über events erst lesen! eine empfelung auf deutsch vieleicht, der herr?

danke :roll:
 

dudu3k

Aktives Mitglied
mit setLoc werden normal noch die Localen gesetzt, und das funktoniert auch. aber was ist das problem bei den ActionCommands? in denen schreibe ich nur dateien und beende das program. darf ich also den buttons keine actionlistener zuweisen? was dann? thx
 

dudu3k

Aktives Mitglied
ich habe jetzt itemListener verwendet, aber jetzt passirt gar nicht wenn ich die buttons drücke. in der api und im tutorial bei buttons habe ich nichts gefunden!
 

dudu3k

Aktives Mitglied
Code:
speicherButton.addItemListener(new ItemListener()
{
   public void itemStateChanged(ItemEvent a)
   {
      if(a.getStateChange()==ItemEvent.SELECTED)
         System.exit(0);
   }
}
 

dudu3k

Aktives Mitglied
das implements habe ich entfernt. folgender code geht leider auch nicht, das ergebnis ist das selbe, system.exit(0) geht nicht!? :(
Code:
speicherButton.addActionListener(new ActionListener()
{
   public void actionPerformed(AvtionEvent a)
   {
      System.exit(0);
   }
}
 

dudu3k

Aktives Mitglied
ist ja heut nacht nicht vil los hier! okay ich werde diesen code verwendn :meld:
Code:
public void actionPerformed(ActionEvent a)
{
   if((a.getActionCommand().equalsIgnoreCase("Abbrechen"))||(a.getActionCommand().equalsIgnoreCase("Abort")))
      System.exit(0);
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Input/Output Jave.utill.logging ohne Default-Locale also in Englisch Allgemeine Java-Themen 3
R Locale für Türkei nicht in standard -java ? Allgemeine Java-Themen 1
Ark Locale, Formatter und Scanner: Bug bei Gleitkommazahlen? Allgemeine Java-Themen 2
N BigDecimal falsch formatiert bei Locale.GERMANY Allgemeine Java-Themen 3
S ResourceBundle: Locale Datei in Jar finden Allgemeine Java-Themen 3
R Locale spezifische DateFormat Strings? Allgemeine Java-Themen 3
H2SO3- Date "18.11.2002 20:02:33" trotz Locale.GERMAN nic Allgemeine Java-Themen 9
B locale Montenegro (java 1.4.2) Allgemeine Java-Themen 6
A ResourceBundle ohne LOCALE funkt nicht. Allgemeine Java-Themen 4
I Locale Allgemeine Java-Themen 3
S Locale Allgemeine Java-Themen 8
G SimpleDateFormat und Locale Allgemeine Java-Themen 10
G JComboBox XYZ uses unchecked or unsafe operations Allgemeine Java-Themen 1
FrittenFritze Problem mit einer JComboBox, Event temporär deaktivieren Allgemeine Java-Themen 11
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
S Unchecked cast from Component to JComboBox<String> Allgemeine Java-Themen 3
Luk10 Frage zu JComboBox und GridLayout Allgemeine Java-Themen 3
C Swing JComboBox - Problem mit der Darstellung des Inhaltes Allgemeine Java-Themen 9
I jComboBox itemlänge Allgemeine Java-Themen 7
MQue JComboBox in JTable Allgemeine Java-Themen 4
G JComboBox getSelectedItem Zeit Allgemeine Java-Themen 5
E JComboBox Allgemeine Java-Themen 3
V JComboBox und Wertevergleich. Allgemeine Java-Themen 2
D JComboBox - SelectedIndex Allgemeine Java-Themen 6
P JComboBox Array unterscheiden Allgemeine Java-Themen 3
E JComboBox und JTextFeld mischen Allgemeine Java-Themen 2
T JComboBox simulieren Allgemeine Java-Themen 9
C JCombobox ImageIcon & Text Allgemeine Java-Themen 2
G JComboBox mit aufklappbarem JPanel? Allgemeine Java-Themen 13
G JComboBox mit Werten aus einer Access Datenbank füllen Allgemeine Java-Themen 18
B JComboBox-Eintrag ohne Enter aktualisieren Allgemeine Java-Themen 2
C Serialisierung von JComboBox Allgemeine Java-Themen 4
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben