这是我的代码,必须以GUI形式生成(使用Swing awt) 我的代码工作是从文件夹中读取文本文件并获取重复的单词计数并将这些选定的文件保存到用户指定的文件夹。
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!!!");
}
在此代码段中,变量“success”通过调用其他程序中的属性来执行文件保存操作。
保存后保存几个文件说(100)我的消息对话框应该只显示一次提示。 但对于每一个保存文件操作,它会一次又一次地提示。
如果我保存100个文件,则消息框会出现100次。*(IF和其他)。
我需要在保存文件后只显示一次。!
欢迎任何建议! 提前谢谢。
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();
}
}
答案 0 :(得分:1)
更改此
if(success) { JOptionPane.showMessageDialog(null, "Successfully Completed. Pls refer to the path " + outputDir + " for output files"); }else { JOptionPane.showMessageDialog(null, "OOPS. Some Error!!!"); }
到
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!!!"); }
如果..
,则声明一次为boolean once = false修改强>
因为你发布了完整的源代码..现在很清楚..你必须在while循环之外声明一次变量..