鍍金池/ 教程/ Java/ JavaFX線條
安裝e(fx)clipse到Eclipse (JavaFX工具)
JavaFX屬性
JavaFX文本域(輸入框)
JavaFX切換按鈕
JavaFX曲線
JavaFX教程
JavaFX菜單(Menu)
JavaFX快速入門(mén)
JavaFX復(fù)選框
JavaFX ScrollPane布局
JavaFX綁定
JavaFX顏色選擇器(ColorPicker)
JavaFX進(jìn)度指示器
JavaFX按鈕
JavaFX TitledPane布局
JavaFX圓弧
JavaFX開(kāi)發(fā)環(huán)境安裝配置
在Eclipse安裝JavaFX Scene Builder
JavaFX路徑
JavaFX VBox
JavaFX線條
JavaFX漸變顏色
JavaFX集合
JavaFX BorderPane布局
JavaFX DatePicker
JavaFX單選按鈕
JavaFX滾動(dòng)條
JavaFX矩形橢圓
JavaFX GridPane布局
JavaFX HBox
JavaFX進(jìn)度條
JavaFX多邊形折線
JavaFX超鏈接
JavaFX密碼字段
JavaFX Accordion布局
JavaFX概述和簡(jiǎn)介
JavaFX選擇框
JavaFX文本
JavaFX顏色
JavaFX文件選擇器(FileChooser)
JavaFX標(biāo)簽
JavaFX FlowPane布局

JavaFX線條

為了在JavaFX場(chǎng)景上渲染圖形,我們需要基本的形狀和顏色。

Node類(lèi)是所有JavaFX場(chǎng)景圖形節(jié)點(diǎn)的基本基類(lèi)。它提供了轉(zhuǎn)換和應(yīng)用效果到任何節(jié)點(diǎn)的能力。

javafx.scene.shape.Shape類(lèi)是Node類(lèi)的子類(lèi)。所有較舊的JavaFX 2.x Builder中使用,但在JavaFX 8中這個(gè)類(lèi)已棄用。

JavaFX線條

當(dāng)在JavaFX場(chǎng)景圖形上繪制時(shí),使用屏幕坐標(biāo)空間(系統(tǒng))渲染線。
屏幕坐標(biāo)系將(0,0)放在左上角。x坐標(biāo)沿著x軸移動(dòng)點(diǎn)。從上到下移動(dòng)點(diǎn)時(shí),y坐標(biāo)值增加。

下圖顯示了右側(cè)的屏幕坐標(biāo)系。

在JavaFX中,場(chǎng)景圖形對(duì)象(如線,圓和矩形)是Shape類(lèi)的派生類(lèi)。所有形狀對(duì)象可以在兩個(gè)成形區(qū)域之間執(zhí)行幾何操作,例如減法,相交和并集。要在JavaFX中繪制線條,我們將使用javafx.scene.shape.Line類(lèi)。
要?jiǎng)?chuàng)建一個(gè)Line對(duì)象,我們需要指定一個(gè)start(x,y)坐標(biāo)和一個(gè)結(jié)束坐標(biāo)。
在創(chuàng)建線節(jié)點(diǎn)時(shí),有兩種方法來(lái)設(shè)置起點(diǎn)和終點(diǎn)。

第一種方法使用具有參數(shù):startXstartY,endXendY的構(gòu)造函數(shù)。所有參數(shù)的數(shù)據(jù)類(lèi)型為double。

以下代碼使用構(gòu)造函數(shù)創(chuàng)建一個(gè)起點(diǎn)(100,10)和終點(diǎn)(10,110)的線條。

Line line = new Line(100, 10,   10,   110);

創(chuàng)建線節(jié)點(diǎn)的第二種方法是使用空構(gòu)造函數(shù)來(lái)實(shí)例化一個(gè)Line類(lèi),然后使用setter方法設(shè)置每個(gè)屬性。
以下代碼顯示如何創(chuàng)建一個(gè)線對(duì)象,并使用setter方法設(shè)置線的起點(diǎn)和終點(diǎn)。

Line line = new Line(); 
line.setStartX(100); 
line.setStartY(10); 
line.setEndX(10); 
line.setEndY(110);

在場(chǎng)景圖上繪制的線節(jié)點(diǎn)默認(rèn)為1.0的筆觸寬度和黑色的筆觸顏色。所有形狀的筆觸顏色為null,這意味著除了LinePolylinePath節(jié)點(diǎn)之外沒(méi)有顏色。

要?jiǎng)?chuàng)建不同類(lèi)型的線條,可以設(shè)置繼承自父javafx.scene.shape.Shape類(lèi)的屬性。下表顯示了可以在一個(gè)線條上設(shè)置的屬性。

屬性 數(shù)據(jù)類(lèi)型/說(shuō)明
fill javafx.scene.paint.Paint - 用于填充形狀內(nèi)的顏色。
smooth Boolean - true - 表示打開(kāi)反鋸齒,false表示關(guān)閉反鋸齒。
strokeDashOffset Double - 將距離設(shè)置為虛線模式。
strokeLineCap javafx.scene.shape.StrokeLineCap - 在線或路徑的末尾設(shè)置帽樣式。 有三種風(fēng)格:1.StrokeLineCap.BUTT 2. StrokeLineCap.ROUND 3. StrokeLineCap.SQUARE
strokeLineJoin javafx.scene.shape.StrokeLineJoin - 當(dāng)線相遇時(shí)設(shè)置裝飾。 有三種類(lèi)型:1. StrokeLineJoin.MITER 2. StrokeLineJoin.BEVEL 3. StrokeLineJoin.ROUND
strokeMiterLimit Double - 設(shè)置斜角連接的限制以及斜角連接裝飾StrokeLineJoin.MITER。
stroke javafx.scene.paint.Paint - 設(shè)置形狀的筆劃線的顏色。
strokeType javafx.scene.shape.StrokeType - 設(shè)置在Shape節(jié)點(diǎn)的邊界周?chē)L制描邊的位置。有三種類(lèi)型: 1. StrokeType.CENTERED 2. StrokeType.INSIDE 3. StrokeType.OUTSIDE
strokeWidth Double - 設(shè)置線的寬度。

示例 - 1

以下代碼創(chuàng)建一個(gè)Line對(duì)象,并使用setter方法設(shè)置開(kāi)始和結(jié)束坐標(biāo)。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
// at  Ww W.y iIB A i .CO M
public class Main extends Application {

    @Override
    public void start(Stage stage) {
        VBox box = new VBox();
        final Scene scene = new Scene(box,300, 250);
        scene.setFill(null);

        Line line = new Line();
        line.setStartX(0.0f);
        line.setStartY(0.0f);
        line.setEndX(100.0f);
        line.setEndY(100.0f);

        box.getChildren().add(line);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

上面的代碼生成以下結(jié)果。

示例 - 2

以下代碼設(shè)置更多的線屬性,包括筆觸顏色,筆觸寬度和線帽。之后,它還設(shè)置了線的破折號(hào)樣式。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
import javafx.scene.shape.StrokeLineCap;
import javafx.stage.Stage;

// => W w W.y I  I b Ai .c O  M
public class Main extends Application {
  @Override
  public void start(Stage primaryStage) {
    primaryStage.setTitle("Drawing Lines");

    Group root = new Group();
    Scene scene = new Scene(root, 300, 150, Color.GRAY);

    Line redLine = new Line(10, 10, 200, 10);

    redLine.setStroke(Color.RED);
    redLine.setStrokeWidth(10);
    redLine.setStrokeLineCap(StrokeLineCap.BUTT);

    redLine.getStrokeDashArray().addAll(15d, 5d, 15d, 15d, 20d);
    redLine.setStrokeDashOffset(10);

    root.getChildren().add(redLine);

    primaryStage.setScene(scene);
    primaryStage.show();
  }
  public static void main(String[] args) {
    launch(args);
  }
}

上面的代碼生成以下結(jié)果。


上一篇:JavaFX按鈕下一篇:JavaFX選擇框