Konstanten mir Strings "verknuepfen"

FerFemNemBem

Bekanntes Mitglied
Halloechen,

ich habe hier ein Problem, zu welchem mir einfach kein Konzept einfaellt. Es geht um die Verknuepfung von Konstanten mit (lokalisierbaren) Strings. Am besten ich erklaere es an einem Beispiel:

Konstanten:

BIRNE = 1
APFEL = 5
KOHL = 13445

Jetzt moechte ich in einer Dropdown-Box je nach ausgewaehlter Sprache "Birne", "Apfel", "Kohl" oder "Pear", "Apple", "Cabbage" anzeigen lassen, die ich aus einer Ressourcendatei je nach Sprache hole.

Irgendwie fehlt mir nun die Idee, wie ich die Lokalisierten Strings aus der Dropdown-Box mit den Konstanten verbinden kann - wie ich also von "Apfel" und/oder "Apple" auf die 5 komme. Ich hatte an Enums gedacht aber irgendwie komme ich mit denen auch nicht weiter...

Hat jemand 'ne Idee fuer mich?

Danke!

Gruss, FFNB.
 
Halloechen,

und wie verknuepfe ich

1.) die Dropdown-Box mit den lokalisierten Werten aus dem Enum (die DropdownBox soll mit den Werten der Enum befuellt werden)
2.) die Enum Werte mit den languageressourcen

Das ist mir irgendwie nicht so recht klar.

Gruss, FFNB.
 
1) Hängt vom Toolkit ab. Normal wäre meine Antwort Databinding, solltest du aber zB Swing verwenden fällt das wohl flach
2) Der String ist einfach ein Member des enums.
 
Halloechen,

ja, das ganze ist Swing-basiert. Das DropdownBoxModel soll sich (Sprachbedingt) aus der Enum zusammensetzen. Anschliessend muss ich aus den Strings aber auch wieder irgendwie auf meine Konstanten kommen. Da hakt es dann (bei mir im Kopf zumindest).

Gruss, FFNB.
 
Bei Swing hast du üblicherweise ein Modell und einen Renderer. Im Modell liegen die Enum Werte, der Renderer zeigt den internationalisierten String an.
 
Halloechen,

ich dachte immer die Werte liegen im Model und der Renderer kuemmert sich um das Aussehen (sprich Design) der ComboBox.

Na ich werde mir das mal dahingehend ansehen - auch wenn mir noch nicht so recht klar ist, wie sich der Renderer um die Lokalisierung kuemmern soll.

Gruss, FFNB.
 
ich dachte immer die Werte liegen im Model und der Renderer kuemmert sich um das Aussehen (sprich Design) der ComboBox.
Ja, inwieweit widerspricht das meiner obigen Aussage?

Na ich werde mir das mal dahingehend ansehen - auch wenn mir noch nicht so recht klar ist, wie sich der Renderer um die Lokalisierung kuemmern soll.
Ich würde das wie gesagt schon im enum abhandeln. Einfach eine getLocalizedString() Methode, oder ähnliches definieren.
 
Quick'n'Dirty
Java:
import java.util.ResourceBundle;

public class LocalizedEnum
{
  private static final ResourceBundle bundle = ResourceBundle.getBundle("Fruits");

  public enum Fruits
  {
    PEAR(1),
    APPLE(5),
    CABBAGE(13445),
    ;

    public final int value;
    private final String name;

    private Fruits(int value)
    {
      this.name = bundle.getString(super.toString());
      this.value = value;
    }

    @Override
    public String toString()
    {
      return name;
    }
  }

  public static void main(String[] args)
  {
    Fruits[] fruits = Fruits.values();
    for(int n = 0; n < fruits.length; n++) {
      System.out.println(fruits[n] + " " + fruits[n].value);
    }
  }
}
dazu der Inhalt der Fruits.properties;
Code:
APPLE=Apfel
PEAR=Birne
CABBAGE=Kohl
Hilft des weiter?
 
Zuletzt bearbeitet von einem Moderator:
Halloechen,
ich dachte immer die Werte liegen im Model und der Renderer kuemmert sich um das Aussehen (sprich Design) der ComboBox.
Ja, inwieweit widerspricht das meiner obigen Aussage?

In soweit, als dass ich einen Renderer immer so gesehen hatte, dass er sich um das Design (sprich bunter Hintergrund, eine zusaetzliche Checkbox irgendwo etc.) kuemmert und die Lokalisierung dort fehlplatziert ist. Das war jedenfalls bisher meine Sicht auf Renderer.

Quick'n'Dirty...
Hilft des weiter?

Perfekt! Herzlichen Dank!

Gruss, FFNB.
 
In soweit, als dass ich einen Renderer immer so gesehen hatte, dass er sich um das Design (sprich bunter Hintergrund, eine zusaetzliche Checkbox irgendwo etc.) kuemmert und die Lokalisierung dort fehlplatziert ist
Ich meinte auch nicht das du die Strings im Renderer lokalisieren sollst, sondern das der Renderer dafür sorgt das der richtige Wert der Enum angezeigt wird (der im Enum schon lokalisiert ist).
 

Neue Themen


Zurück
Oben