Нужно было реализовать графическое приложение : 1) Кнопкой обеспечить выбор англоязычного текстового файла; 2)Вывод текста из файла на панель. 3)Приложение выполняет обработку текста большого объема и выполняет подсчет вхождений слов. 4)Затем по нажатию кнопки предлагает в диалоговом окне список наиболее часто встречающихся слов. Не получается реализовать 2й и 4й пункт. Кнопками, текст выводится в консоль, а на окно фрейма не получается. С джавой знаком всего несколько дней, поэтому сильно не ругайте за код. Помогите пожалуйста. Код | package kr;
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.BufferedReader; import java.util.Scanner; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import static kr.KR.f; import static kr.KR.m; public class KR { static String m , f; static String mf[][]; String [] n,c; static Scanner scn; static String a; static int pov,str,stl; public static void main(String[] args) { KR T = new KR(); } JPanel Panel,P1,P2; JButton b1,b2 ; JTextArea Tex; JLabel text; eHandler handler = new eHandler(); //Вывожу данные файла private static void out() { System.out.print(m + " "); System.out.println(); scn.close(); } // Считываю данные файла private static void readfile() { while(scn.hasNext()){ m=scn.next(); m.length(); } } //Открываю файл private static void openFile() { JFileChooser fileopen = new JFileChooser(); int ret = fileopen.showDialog(null, "Открыть файл"); if (ret == JFileChooser.APPROVE_OPTION) { File file = fileopen.getSelectedFile(); f=file.toString(); try{ scn = new Scanner(new File(f)).useDelimiter("(\\d+)(\\w+)"); }catch(Exception e){JOptionPane.showMessageDialog(null, "Файл не найден");} }} //Делаю перебор повторов private static void perebor(){ String n[] = a.replaceAll("[^a-zA-Z ]", "").split(" "); //записываем в массив1 только слова //System.out.println("----------------------------"); //System.out.println(n.length); Set <String> set = new HashSet <String> (Arrays.asList(n));//записываем массив1 в ХЭШ, чтобы убрать дубликаты String[] r = set.toArray(new String[set.size()]); for (int k=0; k<n.length; k++); //System.out.println(n[k]); System.out.println("-------------------------"); System.out.println("Чаще всего повторяющиеся слова в тексте"); mf=new String[n.length][2]; for (int i=0; i<r.length; i++){ for (int j=0; j<n.length; j++){ if (r[i].equalsIgnoreCase(n[j])){ // System.out.println(n[i]); // f[i]=n[i]; pov++; } } mf[i][0]=r[i]; mf[i][1]=Integer.toString(pov); if (pov>2){ System.out.print(mf[i][0]+" Повторилось "+mf[i][1]+ " Раз"); System.out.println();} pov=0; } } //Работа кнопок public class eHandler implements ActionListener { public void actionPerformed (ActionEvent e){ //Вот тут при нажатии кнопки должен выводиться текст файла на JTextArea Tex (или подобный фрейм); if (e.getSource()==b1){ System.out.println("Тыкнул первую кнопку"); openFile(); readfile(); out();} a=m.toString(); //И вот тут при нажатии кнопки должен выводиться текст из массива mf[][] на JTextArea Tex (или подобный фрейм); if (e.getSource()==b2){ System.out.println("Жмякнул вторую кнопку"); perebor(); a=mf.toString(); //Tex.setText(mf); System.out.print(a); } } }
KR(){ text = new JLabel(); Panel = new JPanel(); BorderLayout bl = new BorderLayout(); Panel.setLayout(bl); JTextArea Tex =new JTextArea(10,30); Tex.setLineWrap(true); Tex.setWrapStyleWord(true); b1 = new JButton ("Загрузить текст"); b2 = new JButton ("Обработать текст"); b1.addActionListener(handler); b2.addActionListener(handler); P1 = new JPanel(); P1.add (b1); P1.add (b2); text = new JLabel(); //P2.add (text); Panel.add("West",P1); Panel.add("Center",Tex); JFrame f = new JFrame("Курсовая работа"); f.setContentPane(Panel); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.pack(); f.setVisible(true); Tex.setText("Проверка 1"); a=m.toString(); Tex.setText(a); } }
|
|