Windows
Train of Thought Analysis:
The Code is as follows:
Import java. awt. eventQueue; import java. awt. event. actionEvent; import java. awt. event. actionListener; import java. io. file; import java. io. fileFilter; import javax. swing. JButton; import javax. swing. JFileChooser; import javax. swing. JFrame; import javax. swing. JLabel; import javax. swing. JOptionPane; import javax. swing. JPanel; import javax. swing. JScrollPane; import javax. swing. JSeparator; import javax. swing. JSpinner; import javax. swing. JTable; import javax. swing. JTextField; import javax. swing. border. emptyBorder; import javax. swing. table. defaultTableModel; import java. awt. gridBagLayout; import java. awt. gridBagConstraints; import java. awt. insets;/*** filter for getting the file list ** @ author Li Zhongwei */public class RenameFiles extends JFrame {/***/private static final long serialVersionUID = 4534371106024773867L; private final class ExtNameFileFilter implements FileFilter {private String extName; public ExtNameFileFilter (String extName) {this. extName = extName; // save the File extension} @ Override public boolean accept (File pathname) {// filter the File extension if (pathname. getName (). toUpperCase (). endsWith (extName. toUpperCase () return true; return false ;}} private JPanel contentPane; private JTextField forderField; private JTextField templetField; private File dir; private JTable table; private JTextField extNameField; private JSpinner startSpinner;/*** Launch the application. */public static void main (String [] args) {EventQueue. invokeLater (new Runnable () {public void run () {try {RenameFiles frame = new RenameFiles (); frame. setVisible (true);} catch (Exception e) {e. printStackTrace () ;}});}/*** Create the frame. */public RenameFiles () {setResizable (false); setTitle ("batch object renaming"); setdefaclocloseoperation (JFrame. EXIT_ON_CLOSE); setBounds (100,100,383,409); contentPane = new JPanel (); contentPane. setBorder (new EmptyBorder (5, 5, 5, 5); setContentPane (contentPane); GridBagLayout gbl_contentPane = new GridBagLayout (); iterator = new int [] {72, 54, 60, 87, 91, 0}; gbl_contentPane.rowHeights = new int [] {25, 25, 10, 25, 24, 25, 2,216, 0 }; gbl_contentPane.columnWeights = new double [] {0.0, 0.0, 0.0, 0.0, 0.0, Double. MIN_VALUE}; gbl_contentPane.rowWeights = new double [] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double. MIN_VALUE}; contentPane. setLayout (gbl_contentPane); JLabel label = new JLabel (); label. setText ("batch file renaming module:"); GridBagConstraints gbc_label = new GridBagConstraints (); gbc_label.fill = GridBagConstraints. VERTICAL; gbc_label.insets = new Insets (0, 0, 5, 5); gbc_label.gridwidth = 3; gbc_label.gridx = 1; gbc_label.gridy = 0; contentPane. add (label, gbc_label); JLabel label_1 = new JLabel (); label_1.setText ("file path:"); GridBagConstraints gbc_label_1 = new GridBagConstraints (); constraint = GridBagConstraints. EAST; gbc_label_1.fill = GridBagConstraints. VERTICAL; gbc_label_1.insets = new Insets (0, 0, 5, 5); gbc_label_1.gridx = 0; gbc_label_1.gridy = 1; contentPane. add (label_1, gbc_label_1); forderField = new JTextField (); forderField. setText (""); GridBagConstraints gbc_forderField = new GridBagConstraints (); gbc_forderField.fill = GridBagConstraints. HORIZONTAL; gbc_forderField.insets = new Insets (0, 0, 5, 5); gbc_forderField.gridwidth = 3; gbc_forderField.gridx = 1; gbc_forderField.gridy = 1; contentPane. add (forderField, gbc_forderField); JButton button = new JButton (); button. addActionListener (new ActionListener () {public void actionreceivmed (ActionEvent e) {do_button_actionreceivmed (e) ;}}); button. setText ("Browse"); GridBagConstraints gbc_button = new GridBagConstraints (); gbc_button.anchor = GridBagConstraints. NORTHWEST; gbc_button.insets = new Insets (0, 0, 5, 0); gbc_button.gridx = 4; gbc_button.gridy = 1; contentPane. add (button, gbc_button); JSeparator separator_1 = new JSeparator (); GridBagConstraints gbc_separator_1 = new GridBagConstraints (); response = GridBagConstraints. BOTH; gbc_separator_1.insets = new Insets (0, 0, 5, 0); Limit = 5; gbc_separator_1.gridx = 0; gbc_separator_1.gridy = 2; contentPane. add (separator_1, gbc_separator_1); JLabel label_5 = new JLabel (); label_5.setText ("use # To specify the position occupied by the number count, use * to insert the original file name :"); gridBagConstraints gbc_label_5 = new GridBagConstraints (); gbc_label_5.fill = GridBagConstraints. VERTICAL; gbc_label_5.insets = new Insets (0, 0, 5, 0); gbc_label_5.gridwidth = 5; gbc_label_5.gridx = 0; gbc_label_5.gridy = 3; contentPane. add (label_5, gbc_label_5); JLabel label_3 = new JLabel (); label_3.setText ("template:"); GridBagConstraints gbc_label_3 = new GridBagConstraints (); Limit = limit. EAST; gbc_label_3.fill = GridBagConstraints. VERTICAL; gbc_label_3.insets = new Insets (0, 0, 5, 5); gbc_label_3.gridx = 0; gbc_label_3.gridy = 4; contentPane. add (label_3, gbc_label_3); templetField = new JTextField (); templetField. setText ("catrestaurant ###"); GridBagConstraints gbc_templetField = new GridBagConstraints (); gbc_templetField.anchor = GridBagConstraints. SOUTH; gbc_templetField.fill = GridBagConstraints. HORIZONTAL; gbc_templetField.insets = new Insets (0, 0, 5, 5); gbc_templetField.gridwidth = 3; gbc_templetField.gridx = 1; gbc_templetField.gridy = 4; contentPane. add (templetField, gbc_templetField); JLabel label_4 = new JLabel (); label_4.setText ("starting at:"); GridBagConstraints gbc_label_4 = new GridBagConstraints (); Limit = limit. VERTICAL; gbc_label_4.insets = new Insets (0, 0, 5, 5); gbc_label_4.gridx = 0; gbc_label_4.gridy = 5; contentPane. add (label_4, gbc_label_4); startSpinner = new JSpinner (); GridBagConstraints gbc_startSpinner = new GridBagConstraints (); gbc_startSpinner.fill = GridBagConstraints. HORIZONTAL; gbc_startSpinner.insets = new Insets (0, 0, 5, 5); gbc_startSpinner.gridx = 1; gbc_startSpinner.gridy = 5; contentPane. add (startSpinner, gbc_startSpinner); JLabel label_2 = new JLabel (); label_2.setText ("Extension:"); GridBagConstraints gbc_label_2 = new GridBagConstraints (); constraint = constraint. HORIZONTAL; gbc_label_2.insets = new Insets (0, 0, 5, 5); gbc_label_2.gridx = 2; gbc_label_2.gridy = 5; contentPane. add (label_2, gbc_label_2); JButton startButton = new JButton (); startButton. addActionListener (new ActionListener () {public void actionreceivmed (ActionEvent e) {do_startbutton_actionreceivmed (e) ;}}); extNameField = new JTextField (); extNameField. setText ("jpg"); GridBagConstraints gbc_extNameField = new GridBagConstraints (); gbc_extNameField.fill = GridBagConstraints. HORIZONTAL; gbc_extNameField.insets = new Insets (0, 0, 5, 5); gbc_extNameField.gridx = 3; gbc_extNameField.gridy = 5; contentPane. add (extNameField, gbc_extNameField); startButton. setText ("START"); GridBagConstraints gbc_startButton = new GridBagConstraints (); gbc_startButton.anchor = GridBagConstraints. NORTH; gbc_startButton.insets = new Insets (0, 0, 5, 0); gbc_startButton.gridx = 4; gbc_startButton.gridy = 5; contentPane. add (startButton, gbc_startButton); JSeparator separator_2 = new JSeparator (); GridBagConstraints gbc_separator_2 = new GridBagConstraints (); condition = GridBagConstraints. NORTH; gbc_separator_2.fill = GridBagConstraints. HORIZONTAL; gbc_separator_2.insets = new Insets (0, 0, 5, 0); bytes = 5; gbc_separator_2.gridx = 0; gbc_separator_2.gridy = 6; contentPane. add (separator_2, clerk); JScrollPane scrollPane = new JScrollPane (); GridBagConstraints gbc_scrollPane = new GridBagConstraints (); condition = GridBagConstraints. BOTH; gbc_scrollPane.gridwidth = 5; gbc_scrollPane.gridx = 0; gbc_scrollPane.gridy = 7; contentPane. add (scrollPane, gbc_scrollPane); table = new JTable (); table. setModel (new DefaultTableModel (new Object [] [] {}, new String [] {"old file name", "new file name"}); scrollPane. setViewportView (table);}/*** event handling method of the browser button ** @ param e */protected void do_button_actionreceivmed (ActionEvent e) {JFileChooser chooser = new JFileChooser (); // create a file selector // set to select only the folder chooser. setFileSelectionMode (JFileChooser. DIRECTORIES_ONLY); int option = chooser. showOpenDialog (this); // display the open dialog box if (option = JFileChooser. APPROVE_OPTION) {dir = chooser. getSelectedFile (); // get the selected folder} else {dir = null;} forderField. setText (dir + ""); // display Folder Information}/*** start button event handling method ** @ param e */protected void do_startbutton_actionreceivmed (ActionEvent e) {String templet = templetField. getText (); // obtain the template string if (templet. isEmpty () {JOptionPane. showMessageDialog (this, "Please confirm to rename the template", "Information dialog box", JOptionPane. WARNING_MESSAGE); return;} // obtain the table data model DefaultTableModel model = (DefaultTableModel) table. getModel (); model. setRowCount (0); // clear the table data int bi = (Integer) startSpinner. getValue (); // get the start number int index = templet. indexOf ("#"); // obtain the first "#" index String code = templet. substring (index); // obtain the number placeholder string in the template // replace the number placeholder string in the template with the specified format templet = templet. replace (code, "% 0" + code. length () + "d"); String extName = extNameField. getText (). toLowerCase (); if (extName. indexOf (". ") =-1) extName = ". "+ extName; // obtain the File list array File [] files = dir. listFiles (new ExtNameFileFilter (extName); for (File file: files) {// variable File array // format the name of each file String name = String. format (templet, bi ++) + extName; // Add the old name and new name of the file to the data model of the table. addRow (new String [] {file. getName (), name}); File parentFile = file. getParentFile (); // get the File folder object File newFile = new file (parentFile, name); File. renameTo (newFile); // rename the file }}}
Effect