私は垂直線を描画したい、その垂直線がテキストオブジェクトと交差することがあります。私は何も修正せずにそのようにすると、その行は単語を右に通り、単語を読みにくくします。テキストに到達すると線が消え、テキストノードの直後に線が引かれるようにしたい。私はそれの周りに正方形を作るテキストのCSSバックグラウンドでtoBack()を使用してみましたが、テキストノードは透明な背景を持つように見えるので、行はまだ文字の後ろに表示されます。テキストが線で交差しないようにこれを行う別の方法はありますか?テキストは常に存在していてもいなくてもよく、プログラムの性質上、任意の座標にある可能性があるので、2行(テキストの前に1つ、後に1つ)を描くことはできません。ノード内の線を見ずにテキストノードと交差する線を描く方法
0
A
答えて
1
Text
の代わりにLabel
を使用すると、作業が楽になります。 Label
は(最終的に)Region
のサブクラスであるため、不透明な背景を持つことを可能にする、スタイリングすることができる背景色などの特性を有する。 CSSルールを使用すると、ラベルのデフォルトの背景色になります。
-fx-background-color: -fx-background ;
ラベルには、デフォルトの背景色が付いています。対照的に、Text
は、Shape
のサブクラスであり、テキストを構成するグリフの内側と外側をそれぞれ色付けする、fill
とstroke
のようなプロパティしか持たない。
だからあなたが行うことができます
ラベルのテキストの周りに多くのスペースが必要な場合は、ラベルにパディングを追加できること注になり
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.Line;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextVsLabel extends Application {
@Override
public void start(Stage primaryStage) {
StackPane labelPane = new StackPane();
labelPane.setMinSize(250, 250);
Label label = new Label("A Label");
label.setStyle("-fx-background-color: -fx-background;");
labelPane.getChildren().add(label);
addLineToPane(labelPane);
StackPane textPane = new StackPane();
textPane.setMinSize(250, 250);
textPane.getChildren().add(new Text("A Text"));
addLineToPane(textPane);
HBox root = new HBox(5, labelPane, textPane);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
private void addLineToPane(Pane pane) {
Line line = new Line();
line.startXProperty().bind(pane.widthProperty().divide(2));
line.endXProperty().bind(line.startXProperty());
line.setStartY(0);
line.endYProperty().bind(pane.heightProperty());
// add line to beginning of pane's parent list, so it appears
// behind everything else
pane.getChildren().add(0, line);
}
public static void main(String[] args) {
launch(args);
}
}
:-fx-padding: 1em;
関連する問題
- 1. 2つの光線の法線の交差を見つける
- 2. 線と四角形の交差を確認する方法は?
- 3. javaと線と矩形の交差を見つける
- 4. 3Dの線と三角間の交差
- 5. 線の交点矩形 - 交点を見つける方法?
- 6. イメージに線を描く方法は?
- 7. Googleマップに線を描く方法
- 8. 複数の平面の平均交差線を見つける
- 9. ポリフィットからの曲線の交差点を見つける
- 10. MySQLの線ストリングと線ストリングまたはポリゴンの交差
- 11. 2本の平行線の間に直線の垂線を描く方法は?
- 12. 交差ボックスから実線のポリゴンを見つけるアルゴリズム?
- 13. OpenGLのアンドロイドで線を描く方法
- 14. UITableViewの線を描く方法
- 15. 線を描く別の方法
- 16. Googleのコンボチャートで線を描く方法
- 17. 3Dで交差する平面線Java
- 18. 線ストリングと交差するすべてのポリゴンを返す方法は?
- 19. 複数の線分を交差する線分に分割する
- 20. Matlabで曲線を描く方法
- 21. Quartzでダブルダッシュ線を描く方法
- 22. SVGで縦線を描く方法
- 23. Webformsで線を描く方法は?
- 24. libgdxでグリッド線を描く方法
- 25. アンドロイドで線グラフを描く方法
- 26. アンドロイドで曲線を描く方法
- 27. MonoGame/XNAで破線を描く方法
- 28. 直線と区分線形曲線の交点を見つける
- 29. JavaFx 2.x:破線や点線を描く方法は?
- 30. ios内のポイントのセットから曲線(パス)を描く方法
'Zオーダー 'を設定するか、テキストオブジェクトを前面に移動できますか? – Sedrick
'Text'オブジェクトの背景色を' Parent'オブジェクトの背景色と同じにしようとしましたか? – Sedrick
'Text'を使う必要がありますか? 'Label'を使うことができれば、背景を不透明にすることができます。それ以外の場合は、「テキスト」を挿入することを検討することができます。 'StackPane'を呼び出し、' StackPane'に背景色を与えます。 –