a.2.c.4:
私はJavaFXの小さなテキストエディタを作成しています。
それは、太字、斜体など作り、フォント、それのサイズを変更する例:この目的のために私は動的にスタイルそれにTextAreaのとComboBox'esを使用しています。それは一種の作品の、しかし私は我慢できないことを乱す視覚的なバグがあります。
私は、問題を絞り込むしようとしましたが、ここで私が話しているかを理解するために、同じ行動や写真のカップルを持っているシンプルなコードです:
(その後、太字選ぶ70のサイズを設定するバグを再現するために、あなたは離れて端からどのようにテキストの手順が表示されます。)
public class Main extends Application {
public void start(Stage stage) {
textArea = new TextArea("TEST 112123");
textArea.setPrefWidth(800);
textArea.setPrefHeight(400);
textArea.setLayoutY(40);
CheckBox bold = new CheckBox("BOLD");
bold.setLayoutX(20);
bold.setOnAction(e -> {
Font currentFont = textArea.getFont();
if (bold.isSelected()) {
textArea.setFont(
new Font("System Bold", currentFont.getSize()));
//I set new Font each time to save all of it's past properties and
//change only one of them, this is the only way that I found to do
//this as there are no setters in the Font class, only constructors
} else {
textArea.setFont(
new Font("System", currentFont.getSize()));
}
});
ComboBox sizeBox = new ComboBox();
//I removed the list of options and the input validity check
sizeBox.setLayoutX(80);
sizeBox.setEditable(true);
sizeBox.setOnAction(e -> {
textArea.setFont(new Font(textArea.getFont().getName(),
Double.valueOf((String)sizeBox.getValue())));
});
stage.setScene(new Scene(new Group(textArea, bold, sizeBox), 800, 500));
stage.show();
}
}
なスロー:
あなたは、次のスタイルシートを追加することができます。
.text-area .content {
-fx-padding: 3 7 3 7;
}
それはからのパディングを上書きしますmodena.css
:
.text-area .content {
/*the is 1px less top and bottom than TextInput because of scrollpane border */
-fx-padding: 0.25em 0.583em 0.25em 0.583em; /* 3 7 3 7 */
-fx-cursor: text;
-fx-background-color:
linear-gradient(from 0px 0px to 0px 4px, derive(-fx-control-inner-background, -8%), -fx-control-inner-background);
-fx-background-radius: 2;
}