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