2010-01-11 10 views
6

मेरे पास स्विंग के साथ बनाया गया एक साधारण जावा जीयूआई फॉर्म है। इसमें कुछ टेक्स्ट इनपुट और चेकबॉक्स हैं और मैं इसे अंतिम मान इनपुट को याद रखना चाहता हूं। निस्संदेह उन्हें कुछ फ़ाइल में मैन्युअल रूप से सहेजना संभव है और फिर फ़ाइल को पढ़ें और इनपुट भरें, लेकिन मुझे आश्चर्य है कि यह स्वचालित रूप से कम या कम करने का कोई तरीका है या नहीं। धन्यवादस्विंग जीयूआई फॉर्म में अंतिम मानों को कैसे याद रखें?

+0

बस जावा क्रमबद्धता का उपयोग न करें! –

+0

@ टॉम: बिल्कुल क्यों नहीं? – OscarRyz

उत्तर

2

आपके आवेदन के आकार और डेटा की मात्रा के आधार पर, पूरे यूआई को क्रमबद्ध करना एक विकल्प हो सकता है।

हालांकि यह एक बुरा विचार हो सकता है, जब मूल रूप से जानकारी को पहले से ही डेटाबेस में पुनर्प्राप्त और संग्रहीत किया जाता है। उस स्थिति में मूल्य वस्तुओं और बाध्यकारी का उपयोग किया जाना चाहिए, लेकिन कुछ सरल अनुप्रयोगों के लिए जहां UI जारी रखने के किसी अन्य तरीके से स्वतंत्र है, आप इसका उपयोग कर सकते हैं।

बेशक

, आप धारावाहिक मूल्यों सीधे तो संशोधित नहीं कर सकते, सिर्फ एक अतिरिक्त विकल्प के रूप में इस पर विचार करें:

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); 
     } 
    } 

यहाँ पढ़ है/स्केच के रूप में लिखते हैं, वहाँ एक बहुत है यहां सुधार के लिए कमरे का।

/** 
    * 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){} 
     } 
    } 
} 
0

वास्तव में नहीं। आपको मूल्यों को फ़ाइल या डेटाबेस में स्वयं बनाए रखने का ख्याल रखना होगा।

5

Preferences API का उपयोग करना पसंद किया जाता है।

यह सिस्टम में वरीयताओं को संग्रहीत करता है, लेकिन यह विवरण आपके से छिपा हुआ है - आप कार्यान्वयन विवरण (जो मंच विशिष्ट हैं) की बजाय आपकी प्राथमिकताओं की संरचना और मूल्यों पर ध्यान केंद्रित करते हैं।

यह एपीआई एक ही मशीन पर विभिन्न उपयोगकर्ताओं के लिए अलग-अलग सेटिंग्स की अनुमति देता है।

+0

इसे आज़माएं – Fluffy

संबंधित मुद्दे