私はJavaFXを教えてきました。私は単純なファイル転送計算機を開発しています。ファイルサイズ、転送速度、転送時間を計算します。Java - プログラムがファイルからオプションをロードする最も良い方法は何ですか?
現在のオプションをファイル(たとえばメガバイト、ギガバイトなど)からいくつかのJavaFX ChoiceBoxに読み込みたいと思っています。私が必要とする:
- ファイルは
- 転送が
- 時間単位
を高速化し、ユーザーはそれが秒単位でどのくらいの時間を知りたいかもしれないので、私は、彼らが変換方法についての情報を持っている必要がありますがサイズ1 TBのデータを42 KB /秒の接続で転送することになります。
私はテキストファイルを使うと思っていましたが、ファイルで読みやすいほど書式づけが難しく、書込みプロセスを自動化するのは難しいでしょう。私はそうするためにXMLを使用することを考えましたが、私はこの目的のためにそれを使用する方法や、それが良い考えであるかどうかについては考えていません。 オプションとそれぞれの情報をロードする最も良い方法は何でしょうか?どのように使用するのですか?
package application;
import java.io.ObjectInputStream.GetField;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.Alert.AlertType;
public class MainInterfaceController implements Initializable {
/*
* Declarations of the interface interactive bits FS - File Size TS -
* Transfer Speed TT - Transfer Time
*/
@FXML
private TextField FSTextField;
@FXML
private ChoiceBox<String> FSChoiceBox;
@FXML
private RadioButton FSRadioButton;
@FXML
private TextField TSTextField;
@FXML
private ChoiceBox<String> TSChoiceBox;
@FXML
private RadioButton TSRadioButton;
@FXML
private TextField TTTextField;
@FXML
private ChoiceBox<String> TTChoiceBox;
@FXML
private RadioButton TTRadioButton;
@FXML
private Button AboutButton;
@FXML
private Button CalculateButton;
// Variables & Data Sets
//These should be initialized in the init method so they can be populated with info from a file(?)
private ObservableList<String> fileSizes = FXCollections.observableArrayList("KB", "MB", "GB", "TB", "PB");
private ObservableList<String> transferSpeeds = FXCollections.observableArrayList("KB/s", "MB/s", "GB/s", "TB/s", "PB/s");
private ObservableList<String> timeUnits = FXCollections.observableArrayList("Seconds", "Minutes", "Hours");
@Override
public void initialize(URL location, ResourceBundle resources) {
populateChoiceBoxes();
setRadioButtonsActions();
CalculateButton.setOnAction(e -> calculateValues());
}
private void populateChoiceBoxes() {
FSChoiceBox.setItems(fileSizes);
TSChoiceBox.setItems(transferSpeeds);
TTChoiceBox.setItems(timeUnits);
}
private void setRadioButtonsActions() {
FSRadioButton.setOnAction(e -> clearRadioButtons(e));
TSRadioButton.setOnAction(e -> clearRadioButtons(e));
TTRadioButton.setOnAction(e -> clearRadioButtons(e));
}
private void clearRadioButtons(ActionEvent e) {
if (e.getSource() == FSRadioButton) {
TSRadioButton.setSelected(false);
TTRadioButton.setSelected(false);
}
if (e.getSource() == TSRadioButton) {
FSRadioButton.setSelected(false);
TTRadioButton.setSelected(false);
}
if (e.getSource() == TTRadioButton) {
FSRadioButton.setSelected(false);
TSRadioButton.setSelected(false);
}
}
private void calculateValues() {
if (FSRadioButton.isSelected()) {
try {
String TSText = TSTextField.getText();
double transferSpeed = Double.parseDouble(TSText);
String TTText = TTTextField.getText();
double transferTime = Double.parseDouble(TTText);
} catch (NumberFormatException e) {
Alert alert = new Alert(AlertType.ERROR, "The transfer speed/transfer time must be a number!");
alert.showAndWait();
}
}
}
private void convertSpeed(double transferSpeed, ChoiceBox<String> speedUnit) {
}
}
これまでのところ、私は上記のコードを持っています。あなたが目を引くように見えるように、ObservableListsを宣言します。それが私が自動化したいものであり、最終的な変換方法です。これにより、プログラムはより柔軟で簡単に更新可能になります。
iniファイル? – sMaN
http://stackoverflow.com/questions/190629/what-is-the-easiest-way-to-parse-an-ini-file-in-java – sMaN
@sMaNあなたはそれがどのように機能するかについてより具体的に説明できますか? – Elegea