使用Jtabbedpane打开两个文件但是文件2文本覆盖到文件1中的摆动?

时间:2014-11-04 09:14:36

标签: java swing

使用jtabbedpane.Modify文本两个文件将两个文件加载到textarea然后关闭Jinternalframe它显示Joptionpane对话框,如果是,修改文本保存该特定文件但我的问题file2文本覆盖到file1。如何克服这个问题?

这是我的代码,

 import java.awt.Component;
  import java.beans.PropertyVetoException;
 import java.io.BufferedReader;
 import java.io.DataOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.swing.JFileChooser;
 import javax.swing.JInternalFrame;
 import javax.swing.JOptionPane;
 import javax.swing.JTextArea;
 import javax.swing.UIManager;
 import javax.swing.UnsupportedLookAndFeelException;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.event.InternalFrameAdapter;
 import javax.swing.event.InternalFrameEvent;
public class Open extends javax.swing.JFrame {
JTextArea tx;
ArrayList<String> fileList;
File file;

String filename=null;
int i=0;

 boolean update =false;
public Open() {

   fileList=new ArrayList<String>();

initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    tp = new javax.swing.JTabbedPane();
    jMenuBar1 = new javax.swing.JMenuBar();
    jMenu1 = new javax.swing.JMenu();
    Open = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jMenu1.setText("File");

    Open.setText("Open");
    Open.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            OpenActionPerformed(evt);
        }
    });
    jMenu1.add(Open);

    jMenuBar1.add(jMenu1);

    setJMenuBar(jMenuBar1);

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(tp, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(tp, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE)
    );

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

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

    final JFileChooser jc = new JFileChooser();
    int returnVal=  jc.showOpenDialog(Open.this);
    String title;
    String s=null;
    if(returnVal == JFileChooser.APPROVE_OPTION)     
    file = jc.getSelectedFile();

    if (jc.getSelectedFile()!= null) {
       BufferedReader br = null;
        StringBuffer str = new StringBuffer("");
        StringBuffer str1 = new StringBuffer("");
        StringBuilder st = new StringBuilder("");
        StringBuilder sbHex = new StringBuilder();
        StringBuilder sbText = new StringBuilder();
        StringBuilder sbResult = new StringBuilder();
        final StringBuilder pb = new StringBuilder();
        int bytesCounter =0;        
        String helloWorldInHex=null;
        int value=0;
        try {
            br = new BufferedReader(new FileReader(file));
            String line;
            try {

                    while ((line = br.readLine()) != null) {
                    str.append(line + "\n");
                }
            } 
            catch (IOException ex) {
                Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
            }
        } 
        catch (FileNotFoundException ex) {
            Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
        }

        String t = str.toString();
       filename=file.getPath();
       final JInternalFrame internalFrame = new JInternalFrame("",true,true); 
      final String filePath=file.getAbsolutePath();
      i++;
      internalFrame.setName("Doc "+i);
       tx=new JTextArea();
         internalFrame.setTitle(filename);
        try {
            internalFrame.setSelected(true);
        } 
        catch (PropertyVetoException ex) {
            Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
        }           
        tp.add(internalFrame);
        try{
            tp.setSelectedIndex(i-1);  
        }
        catch(IndexOutOfBoundsException ioe){   
        }
        tx.setText(t);
        internalFrame.add(tx);
      internalFrame.setVisible(true);
      final Document doc=tx.getDocument();

           doc.addDocumentListener(new DocumentListener() {
           @Override
           public void insertUpdate(DocumentEvent e) {
               System.out.println("insert");


             Component c = tp.getSelectedComponent();
        if( c instanceof JInternalFrame)
        {
            JInternalFrame f = (JInternalFrame)c;
            if(!fileList.contains(f.getTitle()))
            {
                fileList.add(f.getTitle());
                 update =true;
            }
        }
           }

           @Override
           public void removeUpdate(DocumentEvent e) {
               update =true;
           }

           @Override
           public void changedUpdate(DocumentEvent e) {
               update =true;
           }
       });    

        internalFrame.addInternalFrameListener(new InternalFrameAdapter() {
            @Override
            public void internalFrameClosing(InternalFrameEvent e) {
            String name=tx.getName();
      Component c = tp.getSelectedComponent();
        if( c instanceof JInternalFrame)
        {
             JInternalFrame f = (JInternalFrame)c;
      String path=f.getTitle();
   if(fileList.contains(path)){
             fileList.remove(path);

          update=false;
        int reply = JOptionPane.showConfirmDialog(null,
                                          "Save Changes to this Document", "Quit", JOptionPane.YES_NO_CANCEL_OPTION);
           int chooserStatus;
        if (reply == JOptionPane.YES_OPTION){
          boolean success;
                String editorString;
                FileWriter fwriter;
                PrintWriter outputFile;
                try {

            DataOutputStream d = new DataOutputStream(new FileOutputStream(jc.getSelectedFile().getPath()));
            String line = tx.getText();

            BufferedReader br = new BufferedReader(new StringReader(line));
            while((line = br.readLine())!=null)
            {
                d.writeBytes(line + "\r\n");
            }


                }
                catch (IOException ee) {     

                    success = false;
                }

         success = true;
                i--;
               tp.remove(internalFrame);
           }
        else if(reply==JOptionPane.NO_OPTION)
        {
            i--;
      tp.remove(internalFrame);
       }
      }

     else 
     {
         System.out.println("fgjqq111133");
          i--;
    tp.remove(internalFrame);
     }
        }     
           }
        });   

    }

    }                                    
  public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
               try {
                UIManager.setLookAndFeel(
                           UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
            } catch (UnsupportedLookAndFeelException ex) {
                Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
            }
            new Open().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
private javax.swing.JMenuItem Open;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JTabbedPane tp;
// End of variables declaration                   
 }

0 个答案:

没有答案