Mam prosty formularz interfejsu GUI w języku Java utworzony za pomocą Swing. Ma kilka wejść tekstowych i pól wyboru i chcę, aby pamiętał ostatnie wartości do nich wprowadzone. Oczywiście możliwe jest ręczne zapisanie ich w jakimś pliku, a następnie odczytanie pliku i wypełnienie danych wejściowych, ale zastanawiam się, czy istnieje sposób, aby to zrobić mniej lub bardziej automatycznie. DziękiJak zapamiętać ostatnie wartości w formularzu GUI Swing?
Odpowiedz
W zależności od wielkości aplikacji i ilości danych, serializacja całego interfejsu użytkownika może być opcjonalna.
To może być jednak zły pomysł, gdy informacje są pobierane i przechowywane w bazie danych. W takim przypadku należy używać obiektów wartości i powiązania, ale w przypadku niektórych prostych aplikacji, w których interfejs użytkownika jest niezależny od innego sposobu utrzymywania, można go użyć.
Oczywiście, nie można modyfikować wartości odcinkach bezpośrednio tak, po prostu uważają to jako dodatkową opcję:
alt text http://img684.imageshack.us/img684/4581/capturadepantalla201001p.png
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class SwingTest {
public static void main(String [] args) {
final JFrame frame = getFrame();
frame.pack();
frame.setVisible(true);
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
writeToFile(frame, "swingtest.ser");
}
});
}
/**
* Reads it serialized or create a new one if it doens't exists
*/
private static JFrame getFrame(){
File file = new File("swingtest.ser");
if(!file.exists()) {
System.out.println("creating a new one");
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add(new JLabel("Some test here:"));
panel.add(new JTextField(10));
frame.add(panel);
return frame;
} else {
return (JFrame) readObjectFrom(file);
}
}
oto odczytu/zapisu jako szkic, tam jest dużo możliwości poprawy tutaj.
/**
* write the object to a file
*/
private static void writeToFile(Serializable s , String fileName) {
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(new FileOutputStream(new File(fileName)));
oos.writeObject(s);
} catch(IOException ioe){
} finally {
if(oos != null) try {
oos.close();
} catch(IOException ioe){}
}
}
/**
* Read an object from the file
*/
private static Object readObjectFrom(File f) {
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream(f)) ;
return ois.readObject();
} catch(ClassNotFoundException cnfe){
return null;
} catch(IOException ioe) {
return null;
} finally {
if(ois != null) try {
ois.close();
} catch(IOException ioe){}
}
}
}
Niezupełnie. Musisz zająć się utrzymywaniem wartości w pliku lub bazie danych.
Preferowane jest użycie Preferences API.
Przechowuje preferencje w systemie, ale szczegóły są ukryte przed tobą - skupić się na strukturze i wartości własnych preferencji, a nie szczegółów implementacyjnych (które są specyficzne dla platformy).
Ten interfejs API umożliwia także różne ustawienia dla różnych użytkowników na tym samym komputerze.
Spróbuję – Fluffy
- 1. Java GUI Swing Model Objaśnienie
- 2. Aplikacje Scala i Swing GUI
- 3. Swing GUI Development with Spring
- 4. Sprawdzanie poprawności wszystkich pól w GUI Swing
- 5. jak wykonać test GUI bez wyświetlania w FEST-SWING
- 6. przeglądarka szesnastkowa/komponent GUI edytora Java Swing?
- 7. Sortowanie wartości Null ostatnie
- 8. java - Jak dynamicznie dodać komponent swing do gui na kliknięcie?
- 9. GUI Java Swing Nie wyświetla się w Xmonad
- 10. Jak dodać elementy JMenuBars, JMenus i JMenuItems za pomocą projektanta GUI Swing GUI IntelliJ?
- 11. Java GUI Automation (nie ogranicza się do GUI opartego na Javie, takiego jak Swing)
- 12. Różnica między validate(), wznawiają ważność() i unieważnia() w Swing GUI
- 13. Odświeżające GUI przez inny wątek w java (swing)
- 14. Napisz programowo w gui lub używając zaawansowanego edytora GUI (Java Swing)?
- 15. Jak zapamiętać ostatnio wybraną zakładkę w UITabBarController?
- 16. Jak mogę zapamiętać wystąpienie klasy w Pythonie?
- 17. Jak mogę usunąć ostatnie siedem znaków wartości skrótu w Perlu?
- 18. Jak ustawić fokus na Textfield w Swing?
- 19. Jak zatrzymać Swing EDT
- 20. Dlaczego platforma GUI języka Java nosi nazwę "Swing?"
- 21. Jak zresetować $ dirty w formularzu
- 22. Czy mogę zapamiętać generator Pythona?
- 23. Xcode 9 - Jak zapamiętać najnowszy symulator?
- 24. Jak odzyskać "ostatnie" niezerowe wartości z wielu kolumn?
- 25. SQL, jak ustawić wartości null jako ostatnie podczas sortowania rosnącego
- 26. GUI java do przypisania wartości tablicy
- 27. Jak edytować szeregowane hashy Rails w formularzu?
- 28. Java Swing JTextField wstawka
- 29. Jak zintegrować kamerę internetową w aplikacji Swing Java?
- 30. Interakcja z aktorami w aplikacjach scala swing
Po prostu nie używaj serializacji Java! –
@Tom: dlaczego nie dokładnie? – OscarRyz