本文概述
- 如何创建一个按钮?
- 向场景图添加按钮
- 设置按钮的文字
- 包装按钮文字
- 在按钮上设置图像
- 按钮动作
- 按钮效果
如何创建一个按钮? 可以通过实例化Button类来创建Button。使用以下行创建按钮对象。
Button btn = new Button("My Button");
向场景图添加按钮 为了使屏幕上的按钮可视化, 我们必须将其附加到场景对象上。以下代码创建一个按钮并将其添加到场景对象。
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ButtonTest extends Application { @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stubStackPane root = new StackPane();
Button btn=new Button("This is a button");
Scene scene=new Scene(root, 300, 300);
root.getChildren().add(btn);
primaryStage.setScene(scene);
primaryStage.setTitle("Button Class Example");
primaryStage.show();
} public static void main(String[] args) {launch(args);
}}
输出:
文章图片
设置按钮的文字 有两种方法可以在按钮上设置文本。
- 将文本传递给类构造函数
- 通过调用setText(“ text”)方法
Btn.setWrapText(true);
在按钮上设置图像 Button类包含一个构造函数, 该构造函数可以接受图形以及按钮上显示的文本。以下代码在按钮上实现图像。
package application;
import java.io.FileInputStream;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ButtonTest extends Application { @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stub FileInputStream input=new FileInputStream("/home/srcmini/Desktop/JavaFX/Images/colored_label.png");
Image image = new Image(input);
ImageView img=new ImageView(image);
StackPane root = new StackPane();
Button btn=new Button("Button 1", img);
btn.setWrapText(true);
Scene scene=new Scene(root, 300, 300);
root.getChildren().add(btn);
primaryStage.setScene(scene);
primaryStage.setTitle("Button Class Example");
primaryStage.show();
} public static void main(String[] args) {launch(args);
}}
输出:
文章图片
使用setGraphic()方法:
Button类还提供了一个名为setGraphic()的实例方法。我们必须通过此方法传递图像视图对象。以下代码实现setGraphic()方法。
package application;
import java.io.FileInputStream;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ButtonTest extends Application { @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stub FileInputStream input=new FileInputStream("/home/srcmini/Desktop/JavaFX/Images/colored_label.png");
Image image = new Image(input);
ImageView img=new ImageView(image);
StackPane root = new StackPane();
Button btn=new Button();
btn.setGraphic(img);
btn.setWrapText(true);
Scene scene=new Scene(root, 300, 300);
root.getChildren().add(btn);
primaryStage.setScene(scene);
primaryStage.setTitle("Button Class Example");
primaryStage.show();
} public static void main(String[] args) {launch(args);
}}
输出:
文章图片
按钮动作 Button类提供了setOnAction()方法, 该方法用于设置按钮click事件的操作。实现handle()方法的匿名类的对象在此方法中作为参数传递。
我们还可以传递lambda表达式来处理事件。以下代码实现Button事件。
package application;
import java.io.FileInputStream;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class LabelTest extends Application { @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stub FileInputStream input=new FileInputStream("/home/srcmini/Desktop/JavaFX/Images/colored_label.png");
Image image = new Image(input);
ImageView img=new ImageView(image);
StackPane root = new StackPane();
Button btn=new Button();
btn.setGraphic(img);
btn.setWrapText(true);
btn.setOnAction(new EventHandler<
ActionEvent>
() {@Overridepublicvoid handle(ActionEvent arg0) {// TODO Auto-generated method stubSystem.out.println("Button clicked");
}} );
Scene scene=new Scene(root, 300, 300);
root.getChildren().add(btn);
primaryStage.setScene(scene);
primaryStage.setTitle("Button Class Example");
primaryStage.show();
} public static void main(String[] args) {launch(args);
}}
输出:
文章图片
按钮效果 我们可以将效果应用到Button。这些效果由javafx.scene.effect包提供。以下代码显示了如何将阴影效果应用于按钮。
package application;
import java.io.FileInputStream;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ButtonTest extends Application { @Override public void start(Stage primaryStage) throws Exception {// TODO Auto-generated method stub FileInputStream input=new FileInputStream("/home/srcmini/Desktop/JavaFX/Images/colored_label.png");
Image image = new Image(input);
ImageView img=new ImageView(image);
DropShadow shadow = new DropShadow();
StackPane root = new StackPane();
Button btn=new Button();
btn.setEffect(shadow);
btn.setGraphic(img);
btn.setWrapText(true);
btn.setOnAction(new EventHandler<
ActionEvent>
() {@Overridepublic void handle(ActionEvent arg0) {// TODO Auto-generated method stubSystem.out.println("Button clicked");
}} );
Scene scene=new Scene(root, 300, 300);
root.getChildren().add(btn);
primaryStage.setScene(scene);
primaryStage.setTitle("Button Class Example");
primaryStage.show();
} public static void main(String[] args) {launch(args);
}}
输出:
文章图片
推荐阅读
- JavaFX ColorAdjust效果
- JavaFX Cirlce
- uni-app开发全局弹层组件
- 路由基础之OSPF虚链路
- [OpenCV实战]23 使用OpenCV获取高动态范围成像HDR
- Keras中模型的编译
- linux硬核知识点
- ansible搭建k8s
- Gitlab其他用户登录返回500错误解决