版本2:图形界面,把版本1的过程改为图形化显示。在文本框下提示用户输入文件名,然后以统计直方图的形式显示每个字母的出现频率。运行示例:,用JavaFx
时间: 2024-03-29 15:39:23 浏览: 286
好的,那么我们需要使用JavaFx来实现这个图形界面。下面是一个简单的JavaFx示例程序,你可以参考下面的代码进行实现:
```java
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class LetterFrequencyCounter extends Application {
@Override
public void start(Stage primaryStage) {
// 创建一个BorderPane布局作为根布局,并设置内边距
BorderPane root = new BorderPane();
root.setPadding(new Insets(10, 10, 10, 10));
// 创建一个Label用于提示用户输入文件名,并添加到root的顶部
Label filenameLabel = new Label("请输入文件名:");
root.setTop(filenameLabel);
// 创建一个TextField用于输入文件名,并添加到root的顶部
TextField filenameTextField = new TextField();
root.setTop(filenameTextField);
// 创建一个Button用于开始计算字母频率,并添加到root的顶部
Button startButton = new Button("开始");
root.setTop(startButton);
// 创建一个TextArea用于显示字母频率直方图,并添加到root的中心
TextArea histogramTextArea = new TextArea();
root.setCenter(histogramTextArea);
// 创建一个HBox用于包含filenameLabel和filenameTextField
HBox filenameBox = new HBox();
filenameBox.getChildren().addAll(filenameLabel, filenameTextField);
// 创建一个VBox用于包含filenameBox和startButton,并设置间距
VBox topBox = new VBox();
topBox.getChildren().addAll(filenameBox, startButton);
topBox.setSpacing(10);
// 设置root的顶部为topBox
root.setTop(topBox);
// 为startButton添加事件处理器
startButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// 获取用户输入的文件名
String filename = filenameTextField.getText();
// 调用计算字母频率的方法
String histogram = calculateHistogram(filename);
// 在TextArea中显示字母频率直方图
histogramTextArea.setText(histogram);
}
});
// 创建一个Scene,并将root作为根节点
Scene scene = new Scene(root, 400, 300);
// 设置Stage的标题和Scene
primaryStage.setTitle("字母频率统计器");
primaryStage.setScene(scene);
// 显示Stage
primaryStage.show();
}
private String calculateHistogram(String filename) {
// 在这里实现计算字母频率的逻辑
// 返回一个字符串,包含字母频率直方图
return "";
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个示例程序中,我们使用了一个BorderPane作为根布局,并在顶部添加了一个Label和一个TextField,用于提示用户输入文件名。然后又添加了一个Button,用于开始计算字母频率。在中心位置添加了一个TextArea,用于显示字母频率直方图。
当用户点击开始按钮时,程序会从TextField中获取文件名,并调用calculateHistogram()方法进行字母频率的计算。然后将计算得到的字母频率直方图显示在TextArea中。你只需要在calculateHistogram()方法中实现具体的计算逻辑即可。
希望这个示例程序可以帮助你完成任务。如果有任何问题,请随时问我。
阅读全文