目标之一是把打印导出的功能最终用java实现一套,首先选定javafx,因为idea默认创建工程就带的javafx,没找到swing。
创建工程,这里要选1.8,高版本jdk默认不带fx
实现主界面的代码
package sample;import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import javafx.scene.control.Button;import java.util.concurrent.atomic.AtomicInteger;public class Main extends Application {//数字static int num = 0;//场景Scene scene;//场景1Scene scene1;@Overridepublic void start(Stage stage) throws Exception {//舞台标题stage.setTitle("第一个java程序");// 流式布局:按照控件的添加次序按个摆放,按照从上到下、从左到右的次序摆放。FlowPane pane = new FlowPane(10, 10);// 居中显示pane.setAlignment(Pos.CENTER);// 场景scene = new Scene(pane, 800, 600);// 标签Label label = new Label("初始值:" + num);// 加1按钮Button addButton = new Button("加1");addButton.setOnMouseClicked(e -> {num++;label.setText("当前值:" + num);});//减1按钮Button subButton = new Button("减1");subButton.setOnMouseClicked(e -> {num--;label.setText("当前值:" + num);});//切换到场景1Button btnScene1 = new Button("场景1");btnScene1.setOnMouseClicked(e -> {stage.setScene(scene1);});//弹出一个子窗口Button btnShowChildForm = new Button("子窗口");btnShowChildForm.setOnMouseClicked(e -> {Child.ShowChild("子窗口", "传给子窗口的参数");});pane.getChildren().addAll(addButton, subButton, btnScene1, btnShowChildForm, label);// 场景1// 流式布局:按照控件的添加次序按个摆放,按照从上到下、从左到右的次序摆放。FlowPane pane1 = new FlowPane(10, 10);// 居中显示pane1.setAlignment(Pos.CENTER);scene1 = new Scene(pane1, 200, 150);//返回开始的场景Button btnReturn = new Button("返回");btnReturn.setOnMouseClicked(e -> {stage.setScene(scene);});pane1.getChildren().addAll(btnReturn);//默认场景和显示stage.setScene(scene);stage.show();}public static void main(String[] args) {launch(args);}
}
实现弹窗的代码
package sample;import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.FlowPane;
import javafx.stage.Modality;
import javafx.stage.Stage;/*** 显示一个子窗口*/
public class Child {/*** 显示一个子窗口** @param title 标题* @param info 信息*/public static void ShowChild(String title, String info) {//创建舞台Stage stage = new Stage();//设置标题stage.setTitle(title);//模态stage.initModality(Modality.APPLICATION_MODAL);// 标签Label label = new Label(info);// 关闭按钮Button closeButton = new Button("关闭");closeButton.setOnMouseClicked(e -> {stage.close();});FlowPane pane = new FlowPane(10, 10);// 居中显示pane.setAlignment(Pos.CENTER);Scene scene = new Scene(pane, 500, 350);//添加控件pane.getChildren().addAll(closeButton, label);//设置场景和显示stage.setScene(scene);stage.show();}}
测试
打包配置,这里没生成Exe也是奇怪
写CS的第一步探索就完成了