2014-04-24 27 views
0

嗨,大家好我目前正在研究一種「地牢爬行」遊戲,我需要一些幫助來保存我的程序。我想讓我的jFrame保存(我輸入的所有文本),這樣當我關閉程序並從桌面上將其打開時,它將會輸入我輸入的文本以及我在程序中更改的所有內容。我很困惑如何保存和希望得到一些幫助。在此之前感謝您的所有時間,服務員,鏈接,示例和建議。爲了清楚我是新手,現在只有5天左右的編碼,而且我仍然使用Netbeans jFrame的「設計」功能爲我生成大部分代碼。下面我已經發布了我的第二個Jframe的代碼。隨意將這些代碼複製並粘貼到您的netbeans IDE中。謝謝 :)。如何「保存」我的程序?

注意:如果需要我的其他Jframes的名稱。 「性格」是我第二次的JFrame 「MainClass」是我的Java應用程序 「MainGamePanel」是我第三次的JFrame

注意:一些按鈕可能無法工作,因爲這不是我的所有jFrames的

package ddsheet; //This is the code for my jFrame named Character 

import java.nio.file.Files; 
import javax.swing.JFileChooser; 

public class Character extends javax.swing.JFrame { 

    public Character() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     jLabel5 = new javax.swing.JLabel(); 
     jLabel6 = new javax.swing.JLabel(); 
     jLabel7 = new javax.swing.JLabel(); 
     jLabel8 = new javax.swing.JLabel(); 
     jLabel9 = new javax.swing.JLabel(); 
     jLabel10 = new javax.swing.JLabel(); 
     jButton1 = new javax.swing.JButton(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTextArea1 = new javax.swing.JTextArea(); 
     jLabel11 = new javax.swing.JLabel(); 
     nameValue = new javax.swing.JLabel(); 
     jLabel13 = new javax.swing.JLabel(); 
     jLabel14 = new javax.swing.JLabel(); 
     strValue = new javax.swing.JLabel(); 
     int1Value = new javax.swing.JLabel(); 
     dexValue = new javax.swing.JLabel(); 
     vitValue = new javax.swing.JLabel(); 
     hpValue = new javax.swing.JLabel(); 
     mpValue = new javax.swing.JLabel(); 
     stamValue = new javax.swing.JLabel(); 
     jProgressBar1 = new javax.swing.JProgressBar(); 
     jLabel12 = new javax.swing.JLabel(); 
     Class = new javax.swing.JLabel(); 
     jMenuBar1 = new javax.swing.JMenuBar(); 
     jMenu1 = new javax.swing.JMenu(); 
     jMenuItem1 = new javax.swing.JMenuItem(); 
     jMenuItem2 = new javax.swing.JMenuItem(); 
     jMenu2 = new javax.swing.JMenu(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Character")); 

     jLabel1.setText("Name:"); 

     jLabel2.setText("Level:"); 

     jLabel3.setText("Gold:"); 

     jLabel4.setText("Str:"); 

     jLabel5.setText("Int:"); 

     jLabel6.setText("Dex:"); 

     jLabel7.setText("Vit:"); 

     jLabel8.setText("Hp:"); 

     jLabel9.setText("Mp"); 

     jLabel10.setText("Stam:"); 

     jButton1.setText("Main Menu"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jTextArea1.setColumns(20); 
     jTextArea1.setRows(5); 
     jScrollPane1.setViewportView(jTextArea1); 

     jLabel11.setText("Inventory"); 

     nameValue.setText("Hiroshema"); 

     jLabel13.setText("1"); 

     jLabel14.setText("550"); 

     strValue.setText("0"); 

     int1Value.setText("0"); 

     dexValue.setText("0"); 

     vitValue.setText("0"); 

     hpValue.setText("0"); 

     mpValue.setText("0"); 

     stamValue.setText("0"); 

     jLabel12.setText("EXP:"); 

     Class.setText("Class"); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
       jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(jPanel1Layout.createSequentialGroup() 
         .addContainerGap() 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
           .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
             .addGap(0, 0, Short.MAX_VALUE) 
             .addComponent(jButton1) 
             .addGap(35, 35, 35)) 
             .addGroup(jPanel1Layout.createSequentialGroup() 
               .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                 .addGroup(jPanel1Layout.createSequentialGroup() 
                   .addComponent(jLabel1) 
                   .addGap(18, 18, 18) 
                   .addComponent(nameValue)) 
                   .addComponent(jLabel4) 
                   .addComponent(jLabel7) 
                   .addComponent(jLabel9) 
                   .addGroup(jPanel1Layout.createSequentialGroup() 
                     .addComponent(jLabel5) 
                     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                     .addComponent(int1Value, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)) 
                     .addComponent(jLabel8) 
                     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
                       .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() 
                         .addComponent(jLabel6) 
                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE) 
                         .addComponent(dexValue, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)) 
                         .addComponent(strValue, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE) 
                         .addComponent(vitValue, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE) 
                         .addComponent(hpValue, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) 
                         .addComponent(mpValue, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE) 
                         .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() 
                           .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
                             .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() 
                               .addComponent(jLabel3) 
                               .addGap(18, 18, 18) 
                               .addComponent(jLabel14)) 
                               .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup() 
                                 .addComponent(jLabel2) 
                                 .addGap(18, 18, 18) 
                                 .addComponent(jLabel13))) 
                                 .addGap(0, 0, Short.MAX_VALUE)) 
                                 .addGroup(jPanel1Layout.createSequentialGroup() 
                                   .addComponent(jLabel10) 
                                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                                   .addComponent(stamValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) 
                                   .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 90, Short.MAX_VALUE) 
                                   .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                                     .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 233, javax.swing.GroupLayout.PREFERRED_SIZE) 
                                     .addComponent(jLabel11)) 
                                     .addGap(97, 97, 97)) 
                                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
                                       .addComponent(Class) 
                                       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
                                       .addComponent(jLabel12) 
                                       .addGap(18, 18, 18) 
                                       .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
                                       .addContainerGap()))) 
       ); 
     jPanel1Layout.setVerticalGroup(
       jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(jPanel1Layout.createSequentialGroup() 
         .addGap(18, 18, 18) 
         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
           .addGroup(jPanel1Layout.createSequentialGroup() 
             .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
               .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
               .addComponent(jLabel12)) 
               .addGap(26, 26, 26)) 
               .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
                 .addComponent(Class) 
                 .addGap(18, 18, 18))) 
                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                   .addComponent(jLabel1) 
                   .addComponent(nameValue) 
                   .addComponent(jLabel11)) 
                   .addGap(18, 18, 18) 
                   .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
                     .addGroup(jPanel1Layout.createSequentialGroup() 
                       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                         .addComponent(jLabel2) 
                         .addComponent(jLabel13)) 
                         .addGap(18, 18, 18) 
                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                           .addComponent(jLabel3) 
                           .addComponent(jLabel14)) 
                           .addGap(41, 41, 41) 
                           .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                             .addComponent(jLabel4) 
                             .addComponent(strValue)) 
                             .addGap(18, 18, 18) 
                             .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                               .addComponent(jLabel5) 
                               .addComponent(int1Value)) 
                               .addGap(18, 18, 18) 
                               .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                                 .addComponent(jLabel6) 
                                 .addComponent(dexValue)) 
                                 .addGap(18, 18, 18) 
                                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                                   .addComponent(jLabel7) 
                                   .addComponent(vitValue)) 
                                   .addGap(18, 18, 18) 
                                   .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                                     .addComponent(jLabel8) 
                                     .addComponent(hpValue)) 
                                     .addGap(18, 18, 18) 
                                     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                                       .addComponent(jLabel9) 
                                       .addComponent(mpValue)) 
                                       .addGap(18, 18, 18) 
                                       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                                         .addComponent(jLabel10) 
                                         .addComponent(stamValue)) 
                                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                                         .addComponent(jButton1)) 
                                         .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE)) 
                                         .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       ); 

     jMenu1.setText("File"); 

     jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.CTRL_MASK)); 
     jMenuItem1.setText("Exit"); 
     jMenuItem1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jMenuItem1ActionPerformed(evt); 
      } 
     }); 
     jMenu1.add(jMenuItem1); 

     jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK)); 
     jMenuItem2.setText("Save"); 
     jMenuItem2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jMenuItem2ActionPerformed(evt); 
      } 
     }); 
     jMenu1.add(jMenuItem2); 

     jMenuBar1.add(jMenu1); 

     jMenu2.setText("Edit"); 
     jMenuBar1.add(jMenu2); 

     setJMenuBar(jMenuBar1); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
       layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
         .addContainerGap() 
         .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addContainerGap()) 
       ); 
     layout.setVerticalGroup(
       layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
         .addContainerGap() 
         .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addContainerGap()) 
       ); 

     pack(); 
    }// </editor-fold>       

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {           
     System.exit(0); 
    }           

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     this.dispose(); 
     new MainGamePanel().setVisible(true); 
    }           

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {           

    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(Character.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(Character.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(Character.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(Character.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new Character().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify      
    public static javax.swing.JLabel Class; 
    public static javax.swing.JLabel dexValue; 
    public static javax.swing.JLabel hpValue; 
    public static javax.swing.JLabel int1Value; 
    private javax.swing.JButton jButton1; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel10; 
    private javax.swing.JLabel jLabel11; 
    private javax.swing.JLabel jLabel12; 
    private javax.swing.JLabel jLabel13; 
    private javax.swing.JLabel jLabel14; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel jLabel5; 
    private javax.swing.JLabel jLabel6; 
    private javax.swing.JLabel jLabel7; 
    private javax.swing.JLabel jLabel8; 
    private javax.swing.JLabel jLabel9; 
    private javax.swing.JMenu jMenu1; 
    private javax.swing.JMenu jMenu2; 
    private javax.swing.JMenuBar jMenuBar1; 
    private javax.swing.JMenuItem jMenuItem1; 
    private javax.swing.JMenuItem jMenuItem2; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JProgressBar jProgressBar1; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTextArea jTextArea1; 
    public static javax.swing.JLabel mpValue; 
    public static javax.swing.JLabel nameValue; 
    public static javax.swing.JLabel stamValue; 
    public static javax.swing.JLabel strValue; 
    public static javax.swing.JLabel vitValue; 
    // End of variables declaration     
} 
+2

如果它只是文本,將它保存到一個文本文件:http://docs.oracle.com/javase/tutorial/essential/io/。如果它的對象序列化:http://docs.oracle.com/javase/tutorial/jndi/objects/serial.html –

+1

@NicolásCarlo - 它的答案:P – TheLostMind

+1

不要考慮保存幀。考慮保存你的遊戲狀態。例如,選擇一種易於解析的格式,如JSON或XML。 –

回答

0

xml mabye?
我想你或許可以使用FileOutputStreamPrintWriter創建一個xml文件,其中的數據節點保存遊戲中所有內容的狀態數據。要閱讀它,您可能想要使用Simple API for XML(SAX)。

只是一個想法。

1

另一個想法是創建一個單獨的類,其中包含您需要保存的所有信息。 並將該類用作主類中的對象,然後像這樣保存對象。

看看序列化一個類(這稱爲序列化)。

public class GameState implements Serializable{ 
...//game settings and states stored here 
} 

//inside the main running class 
my_settings = GameState(); 
... 
// write object 
FileOutputStream fos = new FileOutputStream(path..); 
ObjectOutputStream out = new ObjectOutputStream(fos); 
out.writeObject(my_settings); 
out.close(); 
fos.close(); 

//read object 
fis = new FileInputStream(path..); 
ObjectInputStream ois = new ObjectInputStream(fis); 
my_settings = (GameState) ois.readObject(); 
ois.close(); 
相關問題