JAVAFX 学习笔记


目录

  • JAVAFX 学习笔记
  • Stage
  • 设置标题
  • 设置大小
  • 设置图标
  • 其他的小东西
  • 始终位于顶层
  • Stage可见
  • Scene
  • 键盘鼠标事件
  • 添加监听
  • 监听事件自定义
  • Group
  • 定义group
  • 添加group
  • Pane
  • 操作
  • 按钮
  • 多按钮确定时间源
  • 位置设置
  • 高级设置
  • 单选钮与复选钮
  • 文本框
  • 密码框
  • 文字
  • 画图
  • 图形
  • 直线:
  • 直线的更多用法
  • 矩形
  • 矩形的圆角
  • 圆形
  • 椭圆
  • 文字
  • 画图设置
  • 颜色
  • 文字设置
  • 图片
  • 插入图片
  • 图形转换


Stage

设置标题

primaryStage.serTitle("标题");

设置大小

primaryStage.setHeight(高度);
primaryStage.setWeight(宽度);
primaryStage.setResizable();//括号里true是可以调整窗口大小,false则不可以
primaryStage.setMaxHeight(最大高度);
primaryStage.setMaxWeight(最大宽度);
primaryStage.setMinHeight(最小高度);
primaryStage.setMinWeight(最小宽度);
primaryStage.setFullScreen(true);

设置图标

primaryStage.getIcons().add(new Image(图));

其他的小东西

始终位于顶层

primaryStage.setAlwaysOnTop(true);

Stage可见

primaryStage.show();

Scene

键盘鼠标事件

import javafx.input.MouseEvent;import javafx.input.KeyEvent;

添加监听

scene.setOnMouseClicked(this::方法名);//鼠标点击scene.setOnMouseReleased(this::方法名);//鼠标松开scene.setOnMousePressed(this::方法名);//鼠标按下scene.setOnMouseDrag(this::方法名);//鼠标拖拽 其他的拖拽方法,链接scene.setOnMouseMoved(this::方法名);//鼠标移动scene.setOnMouseEntered(this::方法名)://鼠标进入scene.setOnMouseExited(this::方法名);//鼠标离开scene.setOnKeyPressed(this::方法名);

监听事件自定义

/*
getSceneX()、getSceneY() 返回事件相对于原点的水平位置, 包含 MouseEvent 的源
getScreenX()、getScreenY() 返回事件的绝对水平位置
getX()、getY() 事件相对于 MouseEvent 源起源的水平位置,即控件内部相对位置
*/
public void MouseClickListener(MouseEvent event)
{
	int x,y;
	x=event.getX();
	y=event.getY();
	//...
}
public void MouseDragListener(MouseEvent event)
{
	int x,y;
	x=event.getX();
	y=event.getY();
}
public void KeyPressListener(KeyEvent event)
{
	switch(event.getCode())
	{
	   case UP:
	   	 ...
	  	 break;
	  case down
	  	...
	  	break;
	  ...
	  case KeyCode.A
	  	...
	  	break;
	  ...
	  default;
	  	 ...
	  	 break;
	}
}

Group

定义group

Group root=new Group();root.getChildren().add(加的绘画内容名字)

添加group

scene=new scene(root,宽度,高度,背景色);

Pane

操作

重新画(刷新页面):pane.requestFocus(); HBOX 水平排列
VBOX 垂直排列

按钮

Button push=new Button("按钮名字);
push.setOnAction(this::类名);

public void 类名(ActionEvent event)
{
	//...
}

多按钮确定时间源

//e.g.
Button redButton,blueButton;
redButton=new Button("RED");
blueButton=new Button("BLUE!");
redButton.setOnAction(this::类名);
blueButton.setOnAction(this::类名);

public void 类名(ActionEvent event)
{
	if(event.getSource()==redButton)
	{
		//...
	}
	if(event.getSource()=blueButton)
	{
		//...
	}
}

位置设置

button1.setLayoutX(x坐标);
button1.setLayoutY(y坐标);

高级设置

//设置填充颜色 与圆角与 周围的白边
BackgroundFill backgroundFill = new BackgroundFill(Color.RED, new CornerRadii(10), new Insets(25));
Background background = new Background(backgroundFill);
button1.setBackground(background);

//设置描边颜色 粗细 描边类型 实线 虚线
BorderStroke borderStroke = new BorderStroke(Color.GREEN, BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(10, 10, 10, 10));
Border border = new Border(borderStroke);
button1.setBorder(border);

//设置初始宽高
button1.setPrefWidth(200);
button1.setPrefHeight(50);

//设置字体等
button1.setFont(Font.font(20));
button1.setStyle("-fx-background-color: #7ccd7c;" +
                 "-fx-background-radius: 10;" +
                 "-fx-text-fill:#5cacee");

单选钮与复选钮

CheckBox box1,box2,box3;
box1=new CheckBox("Box1");
box2=new CheckBox("Box2");
box3=new CheckBox("Box3");
box1.setOnAction(this::类名);
box2.setOnAction(this::类名);
box3.setOnAction(this::类名);

public void 类名(ActionEvent event)
{
	if(box1.isSelected())
	{
		//...
	}
	//重点!! 如果想要单选就加else 复选就不加else
	(else)
	if(box2.isSelected())
	{
		//...
	}
	//...
}

文本框

TextField text1=new TextField("初始文字");
text1.setfont(字体);
text1.setPreWidth(宽度);
text1.setOnAction(this::类名);

public void 类名(ActionEvent event)
{
	String s;
	s=text1.getText();
	//...
}

密码框

PasswordField text1=new PasswordField();
text1.setfont(字体);
text1.setPreWidth(宽度);
text1.setOnAction(this::类名);

public void 类名(ActionEvent event)
{
	String s;
	s=text1.getText();
	//...
}

文字

Label label=new Label("初始文字");
label.setFont(字体);
label.setText("更新的文字");

画图

图形

直线:

Line line1=new Line(起始X坐标,起始y坐标,终点x坐标,终点y坐标);

直线的更多用法
Line line=new Line();
line.setStartX(400f);
line.setStartY(0f);
line.setEndX(400.0f);
line.setEndY(800.0f);
line.setRotate(radi/Math.PI*180);
line.setLayoutX(100*Math.cos(radi));
line.setLayoutY(100*Math.sin(radi));
line.setOpacity(0.5);//透明度
int startx,starty,endx,endy;
startx=line.getStartX();
starty=line.getStartY();
endx=line.getEndX();
endy=line.getEndY();

矩形

Rectangle rect1=new Rectangle(左上角x坐标,左上角y坐标,宽度,高度);

矩形的圆角
rect1.setArcHeight(圆角高度);
rect2.setArcWidth(圆角宽度);

圆形

Circle circle1=new Circle(圆心x坐标,圆心y坐标,半径);

椭圆

Ellipse ellipse1=new Ellipse(中心点x左边,中心点y坐标,半长轴长,半短轴);

文字

Text text1=new Text(x轴坐标,y轴坐标,"内容");

画图设置

颜色

文字设置

Font font1=new Font();
text.setFont("字体名字”,...,字号);
//默认为非粗体,正体,'...' 位置可添加FontWeight.BOLD为加粗,FontPosture.ITALIC为斜体,FontPosture.REGULAR为正体
text.setUnderline(true);//true就是有下划线,false就是没有下划线

图片

插入图片

Image img=new Image("相对路径");
ImageView imgView1=new ImageView(img);
imageView.setX(x坐标);
imageView.setY(y坐标);
imageView2.setFitHeight(高度); 
imageView2.setFitWidth(宽度);

图形转换

对象.setTranslateX(x轴方向平移量);
对象.setTranslateY(y轴方向平移量);

对象.setScaleX(缩放比例(0.0-1.0));
对象.setScaleY(缩放比例(0.0-1.0));

对象.setRotate(顺时针旋转的度数);
对象.getTransforms().add(new Rotate(度数,绕点x坐标,绕点y坐标));//绕
(x,y)顺时针旋转

对象.getTransforms().add(new Shear(x轴错切量(0-1,0),y轴错切量(0-1.0)));