請有耐心看完我的查詢謝謝:)按鈕動作事件不工作?和代碼查詢
這是我下面的代碼在GUI形式來產生(使用擺動AWT) 我的代碼工作是從文件夾中讀取文本文件,並重復計算字數並將其保存到指定的文件夾中。 將文件保存爲.xls的
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Map.Entry;
public class maxoccurrence2 {
final static Charset ENCODING = StandardCharsets.UTF_8;
public Map<String, Integer> getWordCount(String fileName) {
FileInputStream fis = null;
DataInputStream dis = null;
BufferedReader br = null;
Map<String, Integer> wordMap = new HashMap<String, Integer>();
try {
fis = new FileInputStream(fileName);
dis = new DataInputStream(fis);
br = new BufferedReader(new InputStreamReader(dis));
String line = null;
while ((line = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()) {
String tmp = st.nextToken().toLowerCase();
if (wordMap.containsKey(tmp)) {
wordMap.put(tmp, wordMap.get(tmp) + 1);
} else {
wordMap.put(tmp, 1);
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) br.close();
} catch (Exception ex) {
}
}
return wordMap;
}
public List<Entry<String, Integer>> sortByValue(Map<String, Integer> wordMap) {
Set<Entry<String, Integer>> set = wordMap.entrySet();
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return (o2.getValue()).compareTo(o1.getValue());
}
});
return list;
}
public static void main(String a[]) throws IOException {
String path = "E:\\testfolder\\";
String fileNameIn;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
fileNameIn = path + listOfFiles[i].getName();
maxoccurrence2 mdc = new maxoccurrence2();
Map<String, Integer> wordMap = mdc.getWordCount(fileNameIn);
List<Entry<String, Integer>> list = mdc.sortByValue(wordMap);
String fileNameOutput = path + "\\output\\"+
listOfFiles[i]
.getName()
.substring(0, listOfFiles[i].getName().length() - 4)+ "output.csv";
try
(BufferedWriter writer = Files .newBufferedWriter(Paths.get(fileNameOutput), ENCODING)) {
for (Map.Entry<String, Integer> entry : list) {
writer.write(entry.getKey() + " =" + entry.getValue());
writer.newLine();
}
}
} }
}
從這個代碼的輸出:
ஒரு10這是mypresent輸出。
現在我們應該將Unicode格式從代碼保存到excel。 輸出文件的例子(TEST.XLS)
內部Excel列,
序列號字計數(靜態列)
1ஒரு10
喜歡我需要的。
IN GUI(擺動)
1)
在源路徑-我們應該選擇的任何文件夾或特定文件 和這些選擇應該在一個textarea 示出選擇的文件的列表中顯示 和它應該有一個複選框「」全選「」 和 複選框,用於我們要選擇的特定文件。
2) 在目標路徑(另一個Jfile選擇器)中,我們應該設置生成輸出的文件夾目標路徑。
如果我們在目的地連連產生相同的文件, 應該提示說「」是否覆蓋或者另存爲另一個副本」。
3) 如果我們選擇一個文件夾中,這是該文件夾中的文件應在複選框的形式顯示在文本區域。
我們應該顯示計數(無文件打勾)。 因此,我們可以知道我們選中並生成這些文件,這是需要或整個文件。
生成後,我們應該給出確認過程完成的消息。
這裏是我的揮杆程序
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class swingpgm3 extends Thread implements ActionListener
{
JFrame f;
JTextField tf,text1;
JTextArea ta;
JLabel lab1;
String str;
JScrollPane scrol;
File fl;
private JCheckBox chckbxSelectAll;
private JTextField textField;
private JLabel lblSourceFolderfiles;
private JButton btnChoosedirectoryfrom;
private JButton btnDisplay;
private JLabel lblListFilesBelow;
swingpgm3()
{
f = new JFrame("Search box");
f.getContentPane().setLayout(null);
f.setSize(820, 700);
tf = new JTextField();
tf.setBounds(25, 50, 750, 40);
tf.setFont(new Font("Latha", Font.BOLD, 20));
tf.setHorizontalAlignment(JTextField.CENTER);
f.getContentPane().add(tf);
ta = new JTextArea();
scrol = new JScrollPane(ta);
ta.setFont(new Font("Latha", Font.BOLD, 20));
//JScrollPane.setPreferredSize(750,450);
scrol.setBounds(25, 100, 750, 450);
f.getContentPane().add(scrol);
chckbxSelectAll = new JCheckBox("Select All");
chckbxSelectAll.setBounds(25, 557, 97, 23);
f.getContentPane().add(chckbxSelectAll);
JButton btnGenerate = new JButton("Generate");
btnGenerate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnGenerate.setBounds(316, 604, 89, 23);
f.getContentPane().add(btnGenerate);
textField = new JTextField();
textField.setBounds(268, 558, 86, 20);
f.getContentPane().add(textField);
textField.setColumns(10);
JLabel lblNoOfFiles = new JLabel("NO of Files Selected");
lblNoOfFiles.setBounds(141, 561, 139, 14);
f.getContentPane().add(lblNoOfFiles);
JLabel lblDestinationFolderTo = new JLabel("Destination PathTo Generate Files");
lblDestinationFolderTo.setBounds(553, 561, 226, 14);
f.getContentPane().add(lblDestinationFolderTo);
JButton btnBrowse = new JButton("Browse");
btnBrowse.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnBrowse.setBounds(553, 583, 89, 23);
f.getContentPane().add(btnBrowse);
lblSourceFolderfiles = new JLabel("Source Folder/ Files");
lblSourceFolderfiles.setBounds(6, 17, 138, 14);
f.getContentPane().add(lblSourceFolderfiles);
btnChoosedirectoryfrom = new JButton("ChooseDirectory From ");
btnChoosedirectoryfrom.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileDialog fd = new FileDialog(f, "Open Box", FileDialog.LOAD);
btnChoosedirectoryfrom.addActionListener(this);
}
});
btnChoosedirectoryfrom.setBounds(141, 9, 170, 30);
f.getContentPane().add(btnChoosedirectoryfrom);
btnDisplay = new JButton("Select To Display");
btnDisplay.setEnabled(false);
btnDisplay.setBounds(534, 9, 180, 30);
btnDisplay.addActionListener(this);
f.getContentPane().add(btnDisplay);
lblListFilesBelow = new JLabel("List files Below to choose ");
lblListFilesBelow.setBounds(344, 17, 180, 14);
f.getContentPane().add(lblListFilesBelow);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae)
{
if (ae.getActionCommand().equals("ChooseDirectory From"))
{
FileDialog fd = new FileDialog(f, "Open Box", FileDialog.LOAD);
fd.setSize(300, 300);
fd.setVisible(true);
str = fd.getDirectory();
if (str != null && !str.trim().equals(""))
{
tf.setText(str);
// Enable the search button
btnDisplay.setEnabled(true);
}
else
{
btnDisplay.setEnabled(false);
}
}
if (ae.getActionCommand().equals("btnDisplay"))
{
fl = new File(str);
File[] flist = fl.listFiles();
for (int i = 0; i < flist.length; i++)
{
String newline = System.getProperty("line.separator");
String nm = text1.getText();
if (flist[i].getName().toLowerCase().endsWith(nm.toLowerCase()))
{
if (flist[i].isFile())
{
ta.setText(ta.getText()+flist[i].getName() + newline);
}
}
}
}
}
public static void main(String args[])
{
new swingpgm3();
}
}
到目前爲止,我已經做了GUI框架, 在我的揮杆節目「ChooseDirectory從」 不打開文件瀏覽器。
之前它確實打開並顯示文本區域中的文件名稱。
可以從這個步驟
我是一個初學者到Java提前 感謝任何人指導。
請妥善縮進代碼。 – user1803551