package menu; import java.io.*; import java.util.*; import javafx.stage.FileChooser; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.ColorPicker; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.control.RadioMenuItem; import javafx.scene.control.ToggleGroup; import javafx.scene.paint.Color; public class MyMenu extends MenuBar { public MyMenu() { ColorPicker cP = new ColorPicker(Color.BLACK);//创建初始颜色为黑色的颜色选择器 Menu fileM=new Menu("文件");//文件菜单 Menu styleM=new Menu("格式");//格式菜单 Menu colorM=new Menu("颜色");//颜色菜单 Menu fontM=new Menu("字体");//字体菜单 MenuItem newMI=new MenuItem("新建");//新建菜单项 MenuItem openMI=new MenuItem("打开");//打开菜单项 MenuItem saveMI=new MenuItem("保存");//保存菜单项 MenuItem exportMI=new MenuItem("导出");//导出菜单项 MenuItem cPMI=new MenuItem("",cP);//颜色选择菜单项 openMI.setOnAction(new EventHandler<ActionEvent>(){ @Override public void handle(ActionEvent arg0) { // TODO 自动生成的方法存根 FileChooser fC = new FileChooser(); fC.setTitle("打开文件"); //设置标题 fC.setInitialDirectory(new File(".")); //设置将当前目录作为初始显示目录 FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("所有.java文件","*.java");//创建文件选择过滤器//可能这里要修改 fC.getExtensionFilters().add(filter); //设置文件过滤器 File file = fC.showOpenDialog(null); //创建打开文件选择对话框 if(file!=null) { try { Scanner scan = new Scanner(file); String info = ""; while(scan.hasNext()) { //判断文件是否还有数据 String str = scan.nextLine(); info += str + "\r\n"; } /* * * * * 将读取的数据放入文本区中,待完成 */ } catch(FileNotFoundException ioe) {}; } else { /* * * * * 文本框输出提示框没有选择文件,待完成 */ } } }); saveMI.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent arg0) { // TODO 自动生成的方法存根 FileChooser fC = new FileChooser(); fC.setTitle("文件保存"); fC.setInitialDirectory(new File(".")); FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter(".java", "*.java");//可能这里要修改 fC.getExtensionFilters().add(filter); File file = fC.showSaveDialog(null); if(file!=null) { try { FileOutputStream f = new FileOutputStream(file); BufferedOutputStream out = new BufferedOutputStream(f); //byte[] b = (ta.getText()).getBytes(); //out.write(b,0,b.length); /* * *待完成,将流程图以字节形式输出 */ out.close(); } catch(IOException ioe) {}; } } });
主类
package main; import draw.DrawingPane; import javafx.application.Application; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Tooltip; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.shape.Arc; import javafx.scene.shape.Circle; import javafx.scene.shape.Line; import javafx.scene.shape.Polygon; import javafx.scene.shape.Polyline; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import menu.MyMenu; import shape.FlowChartShape; public class Main extends Application { MyMenu myMenu=new MyMenu(); FlowChartShape fcShape=new FlowChartShape(); DrawingPane dPane=new DrawingPane(); BorderPane bp=new BorderPane();//边界面板 Pane pane1=new Pane(); Pane pane2=new Pane(); VBox vB=new VBox();//单列面板 Button bt1 = new Button(); Button bt2 = new Button(); Button bt3 = new Button(); Button bt4 = new Button(); Button bt5 = new Button(); Button bt6 = new Button(); Button bt7 = new Button(); Rectangle rec=fcShape.buildRectangle(dPane,bt1);//生成矩形 Rectangle roundRec=fcShape.buildRoundRec(dPane,bt2);//生成圆角矩形 Circle cir=fcShape.buildCircle(dPane,bt3);//生成圆形 Polygon rhombus=fcShape.buildRhombus(dPane,bt5);//生成菱形 Polygon rhomboid=fcShape.buildRhomboid(dPane,bt6);//生成平行四边形 Line line=fcShape.buildLine(dPane,bt4);//生成直线 Polygon triangle=fcShape.buildTriangle();//生成三角形 Polyline polyline=fcShape.buildPolyline(dPane,bt7);//生成折线 Arc arc1=fcShape.buildArc1();//生成弧1 Arc arc2=fcShape.buildArc2();//生成弧2 Tooltip t1 = new Tooltip("矩形");//工具提示 Tooltip t2 = new Tooltip("圆角矩形"); Tooltip t3 = new Tooltip("圆形"); Tooltip t4 = new Tooltip("直线箭头"); Tooltip t5 = new Tooltip("菱形"); Tooltip t6 = new Tooltip("平行四边形"); Tooltip t7 = new Tooltip("单边曲线矩形"); Scene scene=new Scene(bp,1000,1000);//生成场景 @Override public void start(Stage primaryStage) { line.translateXProperty().bindBidirectional(triangle.translateXProperty());//属性绑定 line.translateYProperty().bindBidirectional(triangle.translateYProperty());//属性绑定 polyline.translateXProperty().bindBidirectional(arc1.translateXProperty());//属性绑定 polyline.translateYProperty().bindBidirectional(arc1.translateYProperty());//属性绑定 polyline.translateXProperty().bindBidirectional(arc2.translateXProperty());//属性绑定 polyline.translateYProperty().bindBidirectional(arc2.translateYProperty());//属性绑定 pane1.getChildren().addAll(line,triangle);//直线和三角形添加到pane1 pane2.getChildren().addAll(polyline,arc1,arc2);//折线、弧1、弧2添加到pane2 bt1.setGraphic(rec);//设置按钮上的图标 bt2.setGraphic(roundRec); bt3.setGraphic(cir); bt4.setGraphic(pane1); bt5.setGraphic(rhombus); bt6.setGraphic(rhomboid); bt7.setGraphic(pane2); bt1.setPrefSize(120, 80);//设置按钮尺寸 bt2.setPrefSize(120, 80); bt3.setPrefSize(120, 80); bt4.setPrefSize(120, 80); bt5.setPrefSize(120, 80); bt6.setPrefSize(120, 80); bt7.setPrefSize(120, 80); t1.setStyle("-fx-background-color:blue;-fx-opacity:0.8");//设置提示信息框的颜色和透明度 t2.setStyle("-fx-background-color:blue;-fx-opacity:0.8"); t3.setStyle("-fx-background-color:blue;-fx-opacity:0.8"); t4.setStyle("-fx-background-color:blue;-fx-opacity:0.8"); t5.setStyle("-fx-background-color:blue;-fx-opacity:0.8"); t6.setStyle("-fx-background-color:blue;-fx-opacity:0.8"); t7.setStyle("-fx-background-color:blue;-fx-opacity:0.8"); Tooltip.install(bt1, t1); Tooltip.install(bt2, t2); Tooltip.install(bt3, t3); Tooltip.install(bt4, t4); Tooltip.install(bt5, t5); Tooltip.install(bt6, t6); Tooltip.install(bt7, t7); vB.setStyle("-fx-border-color:black");//设置单列面板边界颜色 vB.setSpacing(8); VBox.setMargin(bt1, new Insets(8)); VBox.setMargin(bt2, new Insets(8)); VBox.setMargin(bt3, new Insets(8)); VBox.setMargin(bt4,new Insets(8)); VBox.setMargin(bt5, new Insets(8)); VBox.setMargin(bt6, new Insets(8)); VBox.setMargin(bt7,new Insets(8)); vB.setAlignment(Pos.TOP_CENTER); //vB.getChildren().addAll(rec,roundRec,cir,pane1,rhombus,rhomboid,pane2);//将图形添加到单列面板 vB.getChildren().addAll(bt1,bt2,bt3,bt4,bt5,bt6,bt7); bp.setTop(myMenu);//菜单位于边界面板顶部 bp.setLeft(vB);//单列面板位于边界面板左边 bp.setCenter(dPane);//绘图面板位于边界面板中间 primaryStage.setTitle("流程图绘制程序"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); }
}