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?
Die Resourcen stehen im Ordner resources in MyTextResource.properties Dateien.
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