Frage von gut4fr5g4, 48

JavaFX Textarea Scrollbars Größe?

Wie kann ich in JavaFX die Größe von den Scrollbars in einem Textarea verändern (will, dass die immer gleich groß bleiben, auch wenn ich die Schriftgröße ändere) Wäre nett, wenn mir jemand helfen könnte

Außerdem noch: Wieso ist der String im Code ohne zeilenumbrüche, obwohl es doch so sein müsste? code: http://hastebin.com/itaqovezaq.vbs

Expertenantwort
von KnusperPudding, Community-Experte für Java, 15

Wäre es möglich das Vorhaben mit dem Scrollbar etwas genauer zu erläutern? Denn so wie das klingt, würde man damit einen gewaltigen Bug provozieren: Wenn der Scrollbar sich nicht ändert, bei geänderter Schriftgröße.

Kommentar von gut4fr5g4 ,

Ich mache gerade einen texteditor (habe ihn fast fertig), aber wenn ich die schriftgröße hochschraube, dann werden auch die scrollbars größer, also die scrollbars unten und rechts, von dem textarea.

Das sieht, finde ich sch3isse aus, weshalb ich die größe dieser scrollbars auf einen bestimmten wert setzen will

LG

Kommentar von KnusperPudding ,

Das ist ein bekannter Bug - Über den ich mich auch schon ziemlich geärgert habe:

https://bugs.openjdk.java.net/browse/JDK-8090200

Kommentar von gut4fr5g4 ,

Weißt du auch, wie ich diesen Bug beheben kann, bzw. was ich tun kann um mein gewünschtes Ergebnis zu haben?

Kommentar von KnusperPudding ,

Für meinen Teil sah ich den Aufwand zu groß als das ich in die Richtung hätte weiter machen können.

Ein Ansatz wäre: Die Scrollbars abzuschalten und in ein neues Scrollpane stecken. Hört sich leichter an als es ist.

Ein anderer Ansatz: Per CSS die Balken zu modifizieren. - Auch das hört sich leichter an als es ist.

Kommentar von gut4fr5g4 ,

Wie geht dass denn mit sem Scrollpane (also gibts da irgendwelche probleme weil du ja sagst dass es schwerer ist als es sich anhört)

Kommentar von KnusperPudding ,

Das hängt damit zusammen, wie Controls in JavaFX aufgebaut sind.

Bei:

TextArea textArea = new TextArea();

ist Beispielswiese die Optische Komponente noch gar nicht geladen.

Diese optische Komponente befindet sich in der Klasse: TextAreaSkin. - Da kommst du als normaler Entwickler ja auch nicht ohne weiteres ran. Zumal diese Komponente auch erst geladen ist, sobald diese verwendet wird.

Den Skin jedoch brauchst du, denn nur innerhalb des Skins gibt es den Scroll-Balken.

Antwort
von Berny96, 27

Probiers mal mit scrollbar.setMaxHeight(höhe); und ..setMaxWidth... oder  scrollbar.setPrefSize(höhe, breite);

Zum zweiten Problem, du versuchst effektiv die Zeilenumbrüche zu entfernen und Sie danach lediglich wieder hinzuzufügen. Darf ich fragen wo der Sinn liegt? :D

Kommentar von gut4fr5g4 ,

Ich will von dem textarea den text MIT zeilenumbrüchen in einen String packen

nein, ich meine die scrollbar von einer combobox niocht eine normale scrollbar

Kommentar von regex9 ,
  1. Lass dir doch einmal den Text der TextArea nur in der Konsole ausgeben und poste das Ergebnis hier (oder auf pastebin).
  2. Welche ComboBox?
Kommentar von gut4fr5g4 ,

ähhm meine textarea, eine scrollbox von einem textarea KEINE normale scrollbox

habe in dem textarea das geschrieben: 

text (zeilenumbruch) 

text (zeilenumbruch) 

text

im gespeicherten textdokument steht aber nur texttexttext und nicht mit zeilenumbrüchen dazwischen

FileChooser fileChooser = new FileChooser();
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("Textdateien (*.txt)", "*.txt");
fileChooser.getExtensionFilters().add(extFilter);
File file = fileChooser.showSaveDialog(Main.stage);
if(file != null){
save(content, file);
}

private void save(String content, File file){
try {
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(content);
fileWriter.close();
}
catch (Exception e){}
}

Kommentar von regex9 ,

1. Überschreibe die TextArea bzw. baue dir eine eigene Komponente

2.
Lass dir doch einmal den Text der TextArea nur in der Konsole ausgeben und poste das Ergebnis hier (oder auf pastebin).

Es kann im Übrigen sein, dass du einen vollständigen carriage return (\r\n) benötigst.
Kommentar von gut4fr5g4 ,

Wie kann ich den textarea überschreiben?

Keine passende Antwort gefunden?

Fragen Sie die Community