sobota, 29 marca 2008

Własna zakładka w oknie opcji

Dzisiaj będzie o tym jak do okna opcji dodać własną zakładkę.



Możemy założyć nowy projekt albo skorzystać już z jakiegoś istniejącego. Ja założyłem nowy projekt OptionsModule z pakietem org.myorg.option. Dodajemy do pakietu nowy plik typu Options Panel z kategorii Module Development.



W następnym oknie kreatora wybieramy typ panelu z opcjami jako główny, podajmy nazwy oraz ikonkę.



Jako ikonkę podałem



Następnie kreator prosi nas o podanie prefiksu i pakietu dla nowo tworzonych plików.



Po zakończeniu kreatora przejdźmy do edycji pliku OptionPanel.java. Panel będzie formatką, na której użytkownik będzie mógł edytować stworzone przez nas opcje. Dodajmy więc do panelu JCheckBox, JTextField oraz JSlider. Będą to przykłady zmiennych odpowiednio typów boolean, String i int.



Przejdźmy teraz do edycji kodu OptionPanel.java. Interesować nas będą dwie metody load() i store(). Pierwsza z nich jest odpowiedzialna za odczytanie zapisanych opcji przy otwarciu panelu a druga za zapisanie opcji przy zamknięciu. Standardowo kreator w tych metodach podpowiada nam w komentarzu jak możemy zapisać czy odczytać nasze zmienne.
void load(){
  jCheckBox1.setSelected(NbPreferences.forModule(OptionPanel.class).
   getBoolean("jCheckBox1", false));
  jTextField1.setText(NbPreferences.forModule(OptionPanel.class).
   get("jTextField1", "tekst"));
  jSlider1.setValue(NbPreferences.forModule(OptionPanel.class).
   getInt("jSlider1", 50));
}
void store() {
  NbPreferences.forModule(OptionPanel.class).
   putBoolean("jCheckBox1", jCheckBox1.isSelected());
  NbPreferences.forModule(OptionPanel.class).
   put("jTextField1", jTextField1.getText());
  NbPreferences.forModule(OptionPanel.class).
   putInt("jSlider1", jSlider1.getValue());
}


Do zapamiętywania wartości użyłem klasy NbPreferences. Klasa ta tworzy plik o rozszerzeniu properties dla każdego modułu, dla którego zostanie wywołana. W naszym przypadku będzie to plik option.properies w katalogu config\Preferences\org\myorg w katalogu roboczym dla aplikacji. Przykładowo dla NetBeans IDE jest to $HOME\.netbeans\6.1beta. Metody put, putBoolean, putInt zapisują odpowiednio wartość typu String, boolean, int. Pierwszy argument to klucz a drugi to wartość dla tego klucza. Jak łatwo się domyśleć metody get, getBoolean i getInt służą do odczytywania wartości. Pierwszy argument to klucz a drugi to wartość na wypadek gdyby klucz nie został znaleziony lub wartość jest innego typu. Uruchommy więc nasz przykład (Install\Reload in Target Platform). Wybieramy z menu Tools -> Options.



Po ustawieniu jakiś wartości w polach i zamknięciu (za pomocą przycisku OK) i ponownym otwarciu wartości w polach powinny być ustawione tak jak w momencie zamykania okna. Jeśli teraz gdziekolwiek w naszym programie chcemy skorzystać z jakiejś opcji wystarczy pobrać ją w ten sam sposób jak to było wyżej pokazane w metodzie load().

Brak komentarzy: