JavaFX文本框是一种用于显示文本的控件,它可以让用户输入文本,也可以用于显示文本。它是JavaFX应用程序中常见的一种控件,可以在GUI中使用。
JavaFX文本框可以使用TextField和TextArea两种形式来创建。TextField是一个单行的文本框,而TextArea是一个多行的文本框。它们都可以让用户输入文本,但TextArea还可以显示多行文本。
// 创建 TextField 实例 TextField textField = new TextField(); // 设置 TextField 的默认值 textField.setText("Hello World!"); // 获取 TextField 的值 String value = textField.getText();
JavaFX文本框还允许开发人员对其进行定制,例如通过setPromptText()方法来设置默认提示信息;通过setEditable()方法来决定是否允许用户修改内容;通过setPrefColumnCount()方法来决定默认显示的列数;通过setPrefRowCount()方法来决定默认显示的行数。
// 设置默认提示信息 textField.setPromptText("Please enter your name"); // 让 TextField 只读不能修改 textField.setEditable(false); // 这里将 TextFiled 限制为 10 列 textField.setPrefColumnCount(10);
另一个基本的JavaFX节点是Text节点,它允许我们在场景图上显示测试。
要创建 Text
节点,请使用 javafx.scene.text.Text
类。
所有JavaFX场景节点都从 javafx.scene.Node
扩展,并且它们继承了许多功能,例如缩放,翻译或旋转的功能。
Text节点的直接父对象是 javafx.scene.shape.Shape
类。我们可以在两个文本之间执行几何操作,如减法,相交或联合。您还可以使用文本剪辑视口区域。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Drawing Text"); Group root = new Group(); Scene scene = new Scene(root, 300, 250, Color.WHITE); int x = 100; int y = 100; int red = 30; int green = 40; int blue = 50; Text text = new Text(x, y, "JavaFX 2.0"); text.setFill(Color.rgb(red, green, blue, .99)); text.setRotate(60); root.getChildren().add(text); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
旋转文本
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Drawing Text"); Group root = new Group(); Scene scene = new Scene(root, 300, 250, Color.WHITE); int x = 100; int y = 100; int red = 30; int green = 40; int blue = 50; Text text = new Text(x, y, "JavaFX 2.0"); text.setFill(Color.rgb(red, green, blue, .99)); text.setRotate(60); root.getChildren().add(text); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
JavaFX的Font API使您能够更改字体样式和字体大小。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.DropShadow; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle(""); Group root = new Group(); Scene scene = new Scene(root, 300, 250, Color.WHITE); Group g = new Group(); Text t = new Text(); t.setCache(true); t.setX(10.0); t.setY(70.0); t.setFill(Color.RED); t.setText("JavaFX"); t.setFont(Font.font(null, FontWeight.BOLD, 32)); g.getChildren().add(t); root.getChildren().add(g); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
具有CHOCOLATE颜色和Font.SERIF的文本
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Title"); final Circle circ = new Circle(40, 40, 30); final Group root = new Group(circ); final Scene scene = new Scene(root, 800, 400, Color.BEIGE); final Text text1 = new Text(25, 25, ".cn"); text1.setFill(Color.CHOCOLATE); text1.setFont(Font.font(java.awt.Font.SERIF, 25)); root.getChildren().add(text1); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
DropShadow
对象基于相对于Text节点的x,y偏移量定位。您可以设置阴影的颜色。
以下代码显示如何使用DropShadow绘制文本。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.DropShadow; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle(""); Group root = new Group(); Scene scene = new Scene(root, 300, 250, Color.WHITE); Group g = new Group(); DropShadow ds = new DropShadow(); ds.setOffsetY(3.0); ds.setColor(Color.color(0.4, 0.4, 0.4)); Text t = new Text(); t.setEffect(ds); t.setCache(true); t.setX(10.0); t.setY(70.0); t.setFill(Color.RED); t.setText("JavaFX drop shadow..."); t.setFont(Font.font(null, FontWeight.BOLD, 32)); g.getChildren().add(t); root.getChildren().add(g); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
使用0.7f调用setFraction()方法基本上指定了我们希望显示70%的反射。
以下代码显示如何使用在文本的反射作用。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.Reflection; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle(""); Group root = new Group(); Scene scene = new Scene(root, 300, 250, Color.WHITE); Text t = new Text(); t.setX(10.0); t.setY(50.0); t.setCache(true); t.setText("Reflections on JavaFX..."); t.setFill(Color.RED); t.setFont(Font.font(null, FontWeight.BOLD, 30)); Reflection r = new Reflection(); r.setFraction(0.7); t.setEffect(r); root.getChildren().add(t); primaryStage.setScene(scene); primaryStage.show(); } }
反射值范围从零(0%)到一(100%)。
我们还可以通过setTopOffset()方法设置不透明节点部分和反射部分之间的空间。顶部偏移默认为零。
上面的代码生成以下结果。
以下代码显示如何使用行分隔符对文本执行换行。
import javafx.application.Application; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.InnerShadow; import javafx.scene.effect.InnerShadowBuilder; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.scene.text.TextBuilder; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Keyboard"); Group root = new Group(); Scene scene = new Scene(root, 530, 300, Color.WHITE); final StringProperty statusProperty = new SimpleStringProperty(); InnerShadow iShadow = InnerShadowBuilder.create() .offsetX(3.5f) .offsetY(3.5f) .build(); final Text status = TextBuilder.create() .effect(iShadow) .x(100) .y(50) .fill(Color.LIME) .font(Font.font(null, FontWeight.BOLD, 35)) .translateY(50) .build(); status.textProperty().bind(statusProperty); statusProperty.set("LinenLine2nLine"); root.getChildren().add(status); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
以下代码显示如何设置文本换行宽度。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { Group root = new Group(); Scene scene = new Scene(root, 300, 150); stage.setScene(scene); stage.setTitle("Sample"); Text t = new Text(10, 50, "This is a test"); t.setWrappingWidth(200); t.setText("First row Second row Second row Second row Second row Second row "); t.setFont(new Font(20)); root.getChildren().add(t); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
JavaFX教程 -JavaFX矩形椭圆avaFX Shape类定义了常见的形状,如线,矩形,圆,Arc,CubicCurve,Ellipse和QuadCurve。在场景图上...
JavaFX教程 -JavaFX绑定JavaFX绑定同步两个值:当因变量更改时,其他变量更改。要将属性绑定到另一个属性,请调用bind()方法,该...
JavaFX教程 -JavaFX按钮当用户单击按钮时,JavaFX Button类可以触发事件。Button类扩展标记的类,它可以显示文本,图像,或两者...
JavaFX教程 -JavaFX 文本字段TextField用于单行文本输入。import javafx.application.Application;import javafx.geometry.Inset...
JavaFX教程 -JavaFX渐变颜色我们可以使用径向渐变使形状看起来三维。梯度绘制可以在两种或更多种颜色之间内插,这给出形状的深度...