1

This is my code below that have to be generated in GUI form(Using Swing awt) My code work is to read text files from a folder and get repeated words count and saving those selected files to a user specified folder.

if(tmp.isSelected()) {
            String filepathNName =  tf.getText() +"\\"+ tmp.getText();
            //filepathNName = System.getProperty("path.separator");
            String filename = tmp.getText();
            System.out.println("filename = " + filename);
            System.out.println("filepaname = " + filepathNName);
            System.out.println("outputDir = " + outputDir);
            boolean success = latestex1.exlCreator(filepathNName, outputDir, filename);
            if(success) {
                JOptionPane.showMessageDialog(null, "Successfully Completed. Pls refer to the path " + outputDir + " for output files");
            } else {
                JOptionPane.showMessageDialog(null, "OOPS. Some Error!!!");
            }

In this code snippet The variable "success " does the file saving action by calling the properties from another program.

After saving saving several files say(100) My message dialog box should show the prompt only once. But for each and every save file action it prompts again and again.

If I save 100 Files the message box appears 100 times.*(IF and else).

I need to make appear it only once after all saving the files.!

Any suggestions welcomed! Thanks in advance.

full code below:

package latestprojectswing;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
public class latestswingpgm3 extends Thread implements ActionListener
{
 JFrame frame;
JPanel panel;
JTextField tf,text,tf1;
JTextArea ta,text1;
JLabel lab1;
String str;
JScrollBar scrol;
JScrollPane scrollPane;
File fl;
private JCheckBox chckbxSelectAll;
private JCheckBox chckbxf1;
private JTextField textField;
private JLabel lblSourceFolderfiles;
private JButton btnChoosedirectoryfrom;
private JButton btnDisplay;
private JLabel lblListFilesBelow;
private JScrollPane jScrollPane1;
ArrayList<JCheckBox> aL = new ArrayList<JCheckBox>();
int selectedCounter = 0;
int y=100;
JPanel contentPane;
String outputDir;
latestswingpgm3()
{
frame = new JFrame( "Search box" );
frame.getContentPane().setLayout( null );
frame.setSize( 820, 700 );

panel = new JPanel();
panel.setBounds( 25, 90, 750, 400 );
//panel.setLayout(null);
//panel.setBounds( 25, 90, 750, 400 );
scrollPane = new JScrollPane( panel );
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//scrollPane.setBounds( 25, 90, 750, 300 );
scrollPane.setPreferredSize(new Dimension(500, 300));
//panel.setVisible(true);
scrollPane.setVisible(true);
frame.add(panel);
frame.add(scrollPane);

tf = new JTextField();
tf.setBounds( 25, 50, 750, 40 );
tf.setFont( new Font( "Latha", Font.BOLD, 20 ) );
tf.setHorizontalAlignment( JTextField.CENTER );
frame.getContentPane().add( tf );


chckbxSelectAll = new JCheckBox("Select All");
chckbxSelectAll.setBounds(25, 557, 97, 23);
frame.getContentPane().add(chckbxSelectAll);
chckbxSelectAll.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        Iterator<JCheckBox> i = aL.iterator();
        while(i.hasNext()) {
            JCheckBox tmp = i.next();
            if(chckbxSelectAll.isSelected()) {
                tmp.doClick();
            } else {
                tmp.setSelected(false);
                selectedCounter -= 1;
                if(selectedCounter < 0) {
                    selectedCounter = 0;
                }
                textField.setText(Integer.toString(selectedCounter));
            }

        }
    }
    });

JButton btnGenerate = new JButton("Generate");
btnGenerate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
    Iterator<JCheckBox> i = aL.iterator();
    while(i.hasNext()) {
        JCheckBox tmp = i.next();

        //scroll adder
        jScrollPane1 = new JScrollPane(frame);
        jScrollPane1.add(tmp);
        jScrollPane1.revalidate();
        if(tmp.isSelected()) {
            String filepathNName =  tf.getText() +"\\"+ tmp.getText();
            //filepathNName = System.getProperty("path.separator");
            String filename = tmp.getText();
            System.out.println("filename = " + filename);
            System.out.println("filepaname = " + filepathNName);
            System.out.println("outputDir = " + outputDir);
            boolean success = latestex1.exlCreator(filepathNName, outputDir, filename);

            if(success) {
                JOptionPane.showMessageDialog(null, "Successfully Completed. Pls refer to the path " + outputDir + " for output files");


            } else {

                JOptionPane.showMessageDialog(null, "OOPS. Some Error!!!");

            }
        }
    }

}
});
btnGenerate.setBounds(316, 604, 89, 23);
frame.getContentPane().add(btnGenerate);

textField = new JTextField();
textField.setBounds(268, 558, 86, 20);
frame.getContentPane().add(textField);
textField.setColumns(10);

JLabel lblNoOfFiles = new JLabel("NO of Files Selected");
lblNoOfFiles.setBounds(141, 561, 139, 14);
frame.getContentPane().add(lblNoOfFiles);

JLabel lblDestinationFolderTo = new JLabel("Destination PathTo Generate Files");
lblDestinationFolderTo.setBounds(553, 561, 226, 14);
frame.getContentPane().add(lblDestinationFolderTo);

JButton btnBrowse = new JButton("Browse");
btnBrowse.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {   

    JFileChooser chooser = new JFileChooser();
    chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    int returnVal = chooser.showOpenDialog(frame);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
        str = chooser.getSelectedFile().getAbsolutePath();
    }

    if ( str != null && !str.trim().equals( "" ) )
    {
        tf1.setText( str );
        outputDir = str;
      // Enable the search button
      //btnDisplay.setEnabled( true );
    }
    else
    {
   //btnDisplay.setEnabled( false );
    }
}
});
btnBrowse.setBounds(553, 583, 89, 23);
frame.getContentPane().add(btnBrowse);

tf1 = new JTextField();
tf1.setBounds( 553, 620, 400, 30 );
tf1.setFont( new Font( "Latha", Font.BOLD, 20 ) );
frame.getContentPane().add( tf1 );

lblSourceFolderfiles = new JLabel("Source Folder/ Files");
lblSourceFolderfiles.setBounds(6, 17, 138, 14);
frame.getContentPane().add(lblSourceFolderfiles);


btnChoosedirectoryfrom = new JButton("ChooseDirectory From");
btnChoosedirectoryfrom.addActionListener(this);
btnChoosedirectoryfrom.setBounds(141, 9, 170, 30);
frame.getContentPane().add(btnChoosedirectoryfrom);

btnDisplay = new JButton("Select To Display");
btnDisplay.setEnabled(false);
btnDisplay.setBounds(534, 9, 180, 30);
btnDisplay.addActionListener( this );

frame.getContentPane().add(btnDisplay);

lblListFilesBelow = new JLabel("List files Below to choose ");
lblListFilesBelow.setBounds(344, 17, 180, 14);
frame.getContentPane().add(lblListFilesBelow);
frame.setVisible( true );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}

public void actionPerformed( ActionEvent ae )
{
if ( ae.getActionCommand().equals( "ChooseDirectory From" ) )
{
  JFileChooser chooser = new JFileChooser();
  chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
  int returnVal = chooser.showOpenDialog(frame);
  if(returnVal == JFileChooser.APPROVE_OPTION) {
        str = chooser.getSelectedFile().getAbsolutePath();
    }

  if ( str != null && !str.trim().equals( "" ) )
  {
    tf.setText( str );

    // Enable the search button
    btnDisplay.setEnabled( true );
  }
  else
  {
 btnDisplay.setEnabled( false );
  }
}

if ( ae.getActionCommand().equals( "Select To Display" ) )
{
  if(aL!=null) {
      Iterator<JCheckBox> i = aL.iterator();
      while(i.hasNext()) {
          panel.remove(i.next());
      }
      selectedCounter = 0;
      textField.setText(Integer.toString(selectedCounter));
  }
  fl = new File( str );
  File[] flist = fl.listFiles();
  for ( int i = 0; i < flist.length; i++ )
  {
      if ( flist[i].isFile() )
      {
     final JCheckBox cb1 = new JCheckBox(flist[i].getName());


     scrollPane.add(cb1);
     panel.add(cb1);



     cb1.setBounds(25, y, 200, 25);
     cb1.setFont(new Font( "Latha", Font.BOLD, 20 ));
     cb1.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e){






                if(cb1.isSelected()) {
                    selectedCounter += 1;
                } else {
                    selectedCounter -= 1;
                    if(selectedCounter < 0) {
                        selectedCounter = 0;
                    }
                }
                textField.setText(Integer.toString(selectedCounter));
            }
         });
     aL.add(cb1);
     panel.add(cb1);
     y+=30;   
      }
  }
}
}

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

1 Answers1

1

Change this

if(success) { JOptionPane.showMessageDialog(null, "Successfully Completed. Pls refer to the path " + outputDir + " for output files"); }else { JOptionPane.showMessageDialog(null, "OOPS. Some Error!!!"); }

To

if(success&&!once) { JOptionPane.showMessageDialog(null, "Successfully Completed. Pls refer to the path " + outputDir + " for output files");once=true; }else if(once! =true) { JOptionPane.showMessageDialog(null, "OOPS. Some Error!!!"); }

Declare once as boolean once=false outside if..

Edit

Since you posted the full source code.. Now it's clear.. You have to declare once variable outside the while loop..

Vaibhav G
  • 627
  • 5
  • 13
  • there is no need of using second `boolean` variable. – SatyaTNV Feb 16 '16 at 05:59
  • No change!same prompting is appearing several times –  Feb 16 '16 at 06:29
  • YEah got it for IF "successfully completed"part!. but else JOptionPane.showMessageDialog(null, "OOPS. Some Error!!!");once=true; I did this but it prompts too as before –  Feb 16 '16 at 06:38
  • Change the else to else if (once! =true) – Vaibhav G Feb 16 '16 at 06:48
  • I have edited the answer copy paste the new code in place of the old one – Vaibhav G Feb 16 '16 at 06:58
  • May I know your suggestion in detail? And I have 2 more queries in my code!! –  Feb 16 '16 at 06:59
  • Details meaning you want an explanation how it will work? – Vaibhav G Feb 16 '16 at 07:08
  • Basically if you use set bounds your specifying the x and y and size.. But imagine if the resolution of screen changes then x and y evrything varies.. Hope you understand it.. – Vaibhav G Feb 16 '16 at 07:09
  • When i write the same files again in the same location,it replaces the current files with new ones.S A message prompt with combo box need to ask whether to overwrite on existing files or to make another copy without replacing on the current files? I did R&D on this but could not find the logic. –  Feb 16 '16 at 07:11
  • Yeah I understand it ! I am new to GUISWING.So need to finalize my frame –  Feb 16 '16 at 07:12
  • I would be happy to help create another question for that . – Vaibhav G Feb 16 '16 at 07:45
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/103574/discussion-between-ram-and-vaibhav-g). –  Feb 16 '16 at 08:37