如果我们打开一个文件,当用户打开同一个文件时不再打开

时间:2014-09-26 09:59:53

标签: java swing file jfilechooser mdi

我使用JFileChooser打开了一个文件。如果我打开了一个文件,它会第一次打开,如果我第二次打开同一个文件,它也会在新标签页中打开。我想只打开一个文件一次。

这是我的代码,

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

   JTextArea text = new JTextArea();
if (jc.getSelectedFile()!= null) {

     tx = new JTextArea();
    BufferedReader br = null;
    StringBuffer str = new StringBuffer("");
     StringBuffer st = new StringBuffer("");



    try {
        br = new BufferedReader(new FileReader(file));
        String line;

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


        String t = str.toString();
     final JInternalFrame internalFrame = new JInternalFrame("",true,true);  
  title=file.getName();
    sts=file.getPath();

        tx.setFont(new java.awt.Font("Miriam Fixed", 0, 13));
    //tx.setLineWrap(true);
    internalFrame.add(tx);
    i+=1;
    internalFrame.setName("Doc "+i);
    JScrollPane  scrollpane=new JScrollPane(tx);

             internalFrame.setTitle(title);
    tp.add(internalFrame);
    try{
      tp.setSelectedIndex(i-1);  
    }
    catch(IndexOutOfBoundsException ioe){      
    }
         internalFrame.add(scrollpane);
    internalFrame.setVisible(true);
    internalFrame.addInternalFrameListener(new InternalFrameAdapter() {
        @Override
        public void internalFrameClosing(InternalFrameEvent e) {
            tp.remove(internalFrame);
        }
    });   


    tx.setText(t);
   try {
            br.close();
            } 

         catch (IOException ex) {
            Logger.getLogger(Open.class.getName()).log(Level.SEVERE, null, ex);
        }
}

由于

1 个答案:

答案 0 :(得分:0)

首先导入java.util。*然后ArrayList<String> = new ArrayList<String>()存储临时文件名String tempfile="get current filename"存储临时值以检查列表int i=0中是否存在文件,并检查数组{{1}中是否存在文件如果文件存在于列表中,则for(String s:) al) { if(s.equals(tempfile)) i++;}否则显示消息“文件已打开”。如果您关闭选项卡,则可以使用删除方法if(i==0) al.add("tempfile");

从列表中删除文件名