「已注销」 2020-05-03 16:42 采纳率: 0%
浏览 77
已结题

Javafx文件读写(源代码多 但是要填的不多 要实现第一个图的三个功能)(小白第一次提问 不知道是否够详细 缺了什么可以提)

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);
	}

}

  • 写回答

1条回答 默认 最新

  • 「已注销」 2020-05-03 16:46
    关注

    还有两个类 题主觉得与题目无关就没发(几百行 怕发了就没人看了)

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?