javafx 统计txt文件字母
时间: 2023-08-10 18:07:26 浏览: 131
JavaFX官方文档(中文翻译)
5星 · 资源好评率100%
好的,您可以使用JavaFX编写一个小程序来统计txt文件中的字母数量。以下是一个简单的实现:
```java
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.GridPane;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class LetterCounter extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Letter Counter");
// 创建GridPane布局
GridPane grid = new GridPane();
grid.setPadding(new Insets(10, 10, 10, 10));
grid.setVgap(10);
grid.setHgap(10);
// 创建TextArea用于显示文件内容
TextArea textArea = new TextArea();
textArea.setEditable(false);
GridPane.setConstraints(textArea, 0, 0, 2, 1);
// 创建Label用于显示字母数量
Label countLabel = new Label();
GridPane.setConstraints(countLabel, 0, 1);
// 创建Button用于选择文件
Button fileButton = new Button("Choose File");
GridPane.setConstraints(fileButton, 1, 1);
// 创建FileChooser用于选择文件
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Open Resource File");
// 设置Button的点击事件
fileButton.setOnAction(e -> {
File selectedFile = fileChooser.showOpenDialog(primaryStage);
if (selectedFile != null) {
textArea.setText(readFile(selectedFile));
countLabel.setText("Letter Count: " + countLetters(textArea.getText()));
}
});
// 将控件添加到GridPane布局中
grid.getChildren().addAll(textArea, countLabel, fileButton);
// 创建Scene并将GridPane布局添加到其中
Scene scene = new Scene(grid, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
// 读取文件内容
private String readFile(File file) {
StringBuilder sb = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
// 统计字母数量
private int countLetters(String text) {
Map<Character, Integer> letterMap = new HashMap<>();
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (Character.isLetter(c)) {
letterMap.put(c, letterMap.getOrDefault(c, 0) + 1);
}
}
return letterMap.size();
}
public static void main(String[] args) {
launch(args);
}
}
```
这个程序使用了JavaFX的控件来构建一个简单的界面,用户可以选择一个txt文件并显示文件内容以及字母数量。在countLetters方法中,我们使用了一个HashMap来统计每个字母出现的次数,最后返回字母数量。您可以根据自己的需要进行修改和扩展。
阅读全文