在过去一周或两周内,我一直在尝试使用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();
}
}
问题 -
我无法更改特定文本对象的大小 - 我知道每次创建新文本对象时,它都会将其分配给&#34; text&#34;变量,等等用滑块改变大小所有与&#34; text&#34;相关联的文本形状。也将改变,如何纠正?
我也确定文本字段也会发生同样的事情 - 每次按下文本按钮时,它只会创建一个新文本字段,它只位于旧文本字段的顶部。我尝试在动作事件之外创建我的文本字段 - 类似于滑块,但不能,因为文本对象是动作事件的本地对象。制作&#34;文字&#34;一个实例变量只会使事情变得复杂,我在应用程序启动方法中会收到一个&#34;异常&#34;错误 - 所以基本上它不起作用。我真正想要的只是一个可以创建多个文本对象的文本字段
对代码表示歉意。我很缺乏经验,甚至看起来一团糟。希望这个问题也有意义