Мне нужно помочь разобраться, как обернуть текст в объекте JavaFX TextField.
Таким образом, мой код получает имя файла от пользователя, открывает файл, вставляя содержимое текстового файла втекстовое поле.Затем пользователь может отредактировать текст и сохранить его в том же файле.
Мой код выполняет все вышеперечисленное, поэтому мне не нужна помощь.Кажется, что у объекта JavaFX TextField нет способа обернуть текст в текстовое поле.В конечном итоге это выглядит так:
Ссылка на альтернативное изображение: https://drive.google.com/open?id=1q2yU5ox6WA5EwS3YSxaKoqUDpCxpbPmu
Я хочу обернуть текст по понятным причинам.Ниже приведен мой код (за исключением операторов импорта)
public class TextEditor extends Application
{
private Button button = new Button();
private TextField text = new TextField();
private Label label = new Label("Enter filename:");
private String filename = "";
String filetext = "";
Scanner file = new Scanner("");
PrintWriter pw = null;
FileOutputStream fos = null;
@Override
public void start(Stage primaryStage) throws Exception
{
GridPane myPane = new GridPane();
myPane.setHgap(10);
myPane.setVgap(10);
Scene myScene = new Scene(myPane, 500, 500);
primaryStage.setScene(myScene);
primaryStage.show();
primaryStage.setTitle("Find File");
myPane.setAlignment(Pos.BASELINE_CENTER);
label.setAlignment(Pos.BASELINE_CENTER);
myPane.add(label, 0, 0, 3, 1);
text.setAlignment(Pos.TOP_LEFT);
text.setPrefWidth(480);
text.setPrefHeight(400);
myPane.add(text, 0, 1);
button = new Button("Submit Filename");
button.setPrefSize(180, 50);
button.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
if(button.getText().equals("Save Changes"))
{
try
{
fos = new FileOutputStream(filename);
pw = new PrintWriter(fos);
System.out.println("Saving changes in " + filename);
pw.println(text.getText());
pw.close();
primaryStage.close();
}
catch (FileNotFoundException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
if(button.getText().equals("Submit Filename"))
{
filename = text.getText();
try
{
file = new Scanner(new FileInputStream(new File(filename)));
while(file.hasNextLine())
{
String line = file.nextLine();
System.out.println(line);
filetext += line + "\n";
}
System.out.println("File text: " + filetext);
text.setText(filetext);
button.setText("Save Changes");
}
catch(FileNotFoundException exc)
{
System.out.println("Cannot find file. Program aborted.");
primaryStage.close();
}
}
}
});
myPane.add(button, 0, 2);
}
public static void main(String[] args)
{
Application.launch(args);
}
}
Очень хотелось бы получить некоторую помощь при переносе текста.Нужно ли не использовать JavaFX TextField?Должен ли я использовать что-то еще?
Заранее спасибо!
РЕДАКТИРОВАТЬ
НАЙДЕНО РЕШЕНИЯ
Iизменил текст TextField на TextArea, удалил строку text.setAlignment (Pos.TOP_LEFT) и добавил text.setWrapText (true) (как предложено ниже), и теперь программа работает отлично.Спасибо Фабиану и Зефиру!