Java图形界面设计,有一个总舞台(stage)包含场景(scence),场景包含面板(pane),面板包含控件和对话框等等…场景也可以直接包含控件,不过我们一般不这么做,一般都是将节点放入面板中。
前提
1.最初导入:
import javafx.application.Application; //应用程序类
import javafx.stage.Stage; //舞台
import javafx.scence.Scence; //场景
2.继承Application类都需要重写start方法
public class qwe extenfs Application{
@Override
public void start(Stage stage){
}
public static void main(String[] args){
Application.lunch(args);
}
}
舞台(stage)
1.stage是在重写start方法内直接创建的,也可以创建第二舞台。
stage.setTitle("舞台");
stage.setScene(scene); //设置场景
stage.show(); //显示舞台
场景(scence)
Scence scence = new Scence(); //括号内可以直接添加根节点,一般都是一个面板,也可以是控件。
//构造方法:设置根节点;根节点 长宽;根结点 背景颜色;根节点 长宽 背景颜色。
scence.setFill(); //设置背景颜色
scence.setRoot(); //设置根节点
面板
面板是其他分面板的父类,所以说他的方法可以被其子类调用。
一个节点只能添加到一个面板内
import javafx.scene.layout.Pane;
Pane pan = new Pane(); //也可以在括号内写入奇子类
pan.setPadding() //设置面板内侧四周空白间距(Insets)
pan.setPrefSize() //设置面板的长宽
pan.setRotate() //设置旋转角度,正角顺时针,负角逆时针
pan.setTranslateX() //沿X轴方向平移一些像素,X可以换为Y,Z
pan.getLayoutX() //获得X坐标,X可以换为Y
pan.setCache() //设置缓冲(一般在图片那里使用)
pan.getChildren().addAll() //添加孩子
2、栈面板
和数据结构里的栈一样,先进入的节点在下面,后进入的在上面,会造成覆盖。
import javafx.scene.layout.StackPane;
StackPane st = new StackPane(); //括号内亦可以加入孩子
st.setMargin(); //设置孩子边缘外侧空白间距(Insets)
st.setAligement() //设置节点的对齐方式,可以指定某一个节点,否则为全部节点(pos)
//pane内的方法也都可以用。
3.流式面板
顾名思义,根水流一样,可以根据窗口的大小而自动改变节点的排列(可以设置按行或者按列)
import javafx.scence.layout.FlowPane;
FlowPane fl = new FlowPane();
fl.setHgap()
fl.setVgap() //设置水平和垂直距离
fl.setOrientation() //设置节点的排放
//需要导入:import geometry.Orentation;
//Otentation.HORIZONTAL水平,Otentation.VERTICAL竖直
4.边界面板
上下左右中,五个位置。可以在某个位置上不设置东西。
import javafx.scene.layout.BoderPane;
BoderPane bd = new BoderPane();
bd.setTop()
bd.setBottom()
bd.setLeft()
bd.setRight()
bd.setCenter()
//设置各个位置的节点
bd.setAligement() //孩子的节点排列方式
5.网络面板
就像是一张大网格,可以设置每个节点的位置。
import javafx.scene.layout.GridPane;
GridPane gd = new GridPane();
gd.setHgap()
gd.setVgap() //设置节点的水平和竖直间距
gd.add(node,x,y(,m,n)) //添加node到x,y位置,占m列n行
gd.addColumn(x,node...) //将所有节点插入到x列
gd.addRow(y,node...) //将所有节点插入到y行
//set设置,get获得
//ColumnIndex,列
//RowIndex,行
5.单行(列)面板
顾名思义啦,只有一行或者一列。
import javafx.scene.layout.HBox; //VBox列
HBox hb = new HBox(); //添加每个节点间距;添加所有孩子;前两个合体
hb.setSpacing() //设置间距
hb.setMargin() //设置节点外边距
hb.setaligement() //整体节点排列方式
6.Java css
设置面板或者按钮的颜色
.setStyle(" ");
-fx-border-color:边框颜色
-fx-background-color:背景颜色
-fx-opacity:透明度(0~1)
辅助类
包括颜色,字体,图像
import javafx.scene.paint.Color; //一般都是调用枚举
import javafx.scene.text.Font; //暂时不会用
图像
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
Image im = new Image("路径");
ImageView ima = new ImageView(im);
ima.setImage(); //设置图像
ima.setFitwidth(); //设置宽
ima.setFitHeigh()
ima.setPerserveRatio() //设置是否保持缩放
ima.setSmooth() //设置平滑算法
ima.setCache() //设置缓冲