2013-07-26 62 views
0

以下代碼是用於登錄和密碼的彈出窗口(JOptionPane)。 我該如何讓我的Java程序記住這兩個字符串:logpass,這樣當用戶關閉程序並下次打開它時,上一次插入的logpass會有默認值嗎?如何保存Java中的最後一個輸入字符串?

import javax.swing.*; 


    public class TestJP { 

     public static String log; 
     public static String pass; 

     public static void main(String[] args) { 



        JTextField login = new JTextField(5); 
        JPasswordField password = new JPasswordField(5); 

        JPanel myPanel = new JPanel(); 
        myPanel.add(new JLabel("login:")); 
        myPanel.add(login); 
        myPanel.add(Box.createHorizontalStrut(15)); 
        myPanel.add(new JLabel("password:")); 
        myPanel.add(password); 

        int result = JOptionPane.showConfirmDialog(null, myPanel, 
          "Please Login", JOptionPane.OK_CANCEL_OPTION); 
        if (result == JOptionPane.OK_OPTION) { 
        log = login.getText(); 
        pass = password.getText(); 
        System.out.println("login: " + log); 
        System.out.println("password: " + pass); 
        } 

       } 

     } 

回答

2

您可以選擇多種選擇,您選擇的選項將歸結爲您想要的選項。

一句警告。如果我是你,我不會保存密碼,但這些方法都不是黑客驗證的。

,你可以:

  • 使用Properties API和保存的內容從一個文件
  • 使用Preferences API這需要照顧persistenace爲您
  • 某種類型的數據庫系統的負載/。您可以使用類似H2hsql(例如)作爲單用戶數據庫
  • 您可以簡單地將內容寫入平面文件。

各有利弊。你需要權衡每一個,並決定哪一個最符合你的直接需求。

個人而言,我喜歡Preferences API,但它的確意味着您無法控制數據存儲位置。

+0

序列化?? – nachokk

+0

@nachokk這是很多工作的小增益,特別是當你考慮到你可以使用'Properties#save'來代替,並保存所有關於'ObjectStream'和施法等的東西:P - 恕我直言。儘管我猜測這可能屬於*「平面文件」*。這也是我可能不考慮使用數據庫的原因之一。有很多涉及很少的利益(在問題的背景下) – MadProgrammer

相關問題