调整单个文本对象的大小

时间:2016-04-10 16:40:26

标签: java javafx-8

在过去一周或两周内,我一直在尝试使用JavaFX在场景中操纵形状和文本对象的不同方法。

目前,我正在考虑创建新的文本对象并能够操纵它们的大小。

所以我有一个场景,一个按钮只是简单地说"文字",一旦按下 创建一个TextField,在此字段中输入文本后,将创建一个新的文本对象。还有一个滑块,您可以使用它来更改文本对象的大小。并且您可以拖动各种Text对象

import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.Text;

public class CreatingNewText extends Application
{
    private int size;
    private TextField enterText;
    private Slider sizeSlider;
    private Button button;
    public static void main(String [] args)
    {
        launch(args);
    }
    public void start(Stage primaryStage)
    {
        Pane root = new Pane();
        // Button for creating new text Object
        button = new Button("text");
        button.setLayoutX(200);

        // Slider for Size
        sizeSlider = new Slider(0,255,0);
        sizeSlider.setLayoutX(250);
        sizeSlider.setLayoutY(0);

        // Button functionality
        button.setOnAction(e ->{
            Text text = new Text(150,300,"Text");
            // Moving created text
            text.setOnMouseDragged(f ->{
            text.setX(f.getX());
            text.setY(f.getY());
            });
            text.setLayoutX(300);
            text.setLayoutY(300);
            text.setFont(Font.font("Phosphate"));
            // Text entry field
            enterText = new TextField();
            text.textProperty().bind(enterText.textProperty());
            // Slider functionality
            text.setOnMouseEntered(g ->{    
            });
            sizeSlider.valueProperty().addListener((ObservableValue
                <? extends Number> ov, Number curVal, Number newVal) ->     {
                    size = (int) sizeSlider.getValue();
                    Font fontSize = Font.font(size);
                    text.setFont(fontSize);
                });
            root.getChildren().addAll(enterText,text);
        });

        root.getChildren().addAll(button,sizeSlider);
        Scene scene = new Scene(root,600,600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

问题 -

  1. 我无法更改特定文本对象的大小 - 我知道每次创建新文本对象时,它都会将其分配给&#34; text&#34;变量,等等用滑块改变大小所有与&#34; text&#34;相关联的文本形状。也将改变,如何纠正?

  2. 我也确定文本字段也会发生同样的事情 - 每次按下文本按钮时,它只会创建一个新文本字段,它只位于旧文本字段的顶部。我尝试在动作事件之外创建我的文本字段 - 类似于滑块,但不能,因为文本对象是动作事件的本地对象。制作&#34;文字&#34;一个实例变量只会使事情变得复杂,我在应用程序启动方法中会收到一个&#34;异常&#34;错误 - 所以基本上它不起作用。我真正想要的只是一个可以创建多个文本对象的文本字段

  3. 对代码表示歉意。我很缺乏经验,甚至看起来一团糟。希望这个问题也有意义

0 个答案:

没有答案