第八课-Group容器的使用
public void start(Stage primaryStage) throws Exception {
Button b1 = new Button("按钮1");//创建按钮
Button b2 = new Button("按钮2");
Button b3 = new Button("按钮3");
b1.setPrefHeight(50);//设置按钮大小
b1.setPrefWidth(120);
b1.setLayoutX(0);//设置按钮位置
b1.setLayoutY(20);
b2.setLayoutX(200);
b2.setLayoutY(20);
b3.setLayoutX(400);
b3.setLayoutY(20);
Group group = new Group();
//group.setOpacity(0.5);//设置group的属性,那么他的子组件也会做相应改变
group.getChildren().addAll(b1, b2, b3);//将按钮添加入容器中
//group.getChildren().clear();//清除组件
//group.getChildren().remove(0);//移除第一个按钮
//System.out.println(group.contains(0,20));//判断(0,0)点是否有组件,只能检测左上角
/*Object[] obj = group.getChildren().toArray();//可以将group中的东西拿出来,做相应改变
System.out.println(obj.length);
for(Object o:obj) {
Button bu = (Button)o;
bu.setPrefHeight(300);
bu.setPrefWidth(200);
}*/
Scene scene = new Scene(group);
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFX");
primaryStage.setHeight(800);
primaryStage.setWidth(800);
primaryStage.show();
}
设置按钮的样式以及点击事件
public void start(Stage primaryStage) {
Button b1 = new Button("按钮1");
Button b2 = new Button("按钮2");
b1.setLayoutX(60);//设置布局位置
b1.setLayoutY(60);
b1.setPrefHeight(80);//设置按钮大小
b1.setPrefWidth(140);
b1.setFont(Font.font("", 10));//设置按钮中的字体和大小
b1.setTextFill(Paint.valueOf("#CD0000"));//设置按钮中字体颜色
//设置按钮颜色形状,Insets:边框偏离四边的距离,也可以指定四个值,分别为上右下左
BackgroundFill bgf = new BackgroundFill(Paint.valueOf("#8FBC8F"), new CornerRadii(20), new Insets(2));
Background bg = new Background(bgf);
b1.setBackground(bg);
//设置按钮边框,CornerRadii:边角弧度,BorderWidths:边框宽度,BorderStrokeStyle:边框类型
//#8A2BE2后再加两位数表示透明度,例如:#8A2BE200:全透明,#8A2BE250:半透明
BorderStroke bos = new BorderStroke(Paint.valueOf("#8A2BE2"), BorderStrokeStyle.SOLID,new CornerRadii(15), new BorderWidths(1));
Border bo = new Border(bos);
b1.setBorder(bo);
//方式二:用CSS方式
b2.setStyle(
"-fx-background-color:#7CCD7C;"+
"-fx-background-radius:10;"+
"-fx-text-fill:#8A2BE2;"
);
//设置按钮监听事件
b1.setOnAction(new EventHandler<ActionEvent>(){
int i = 0;
public void handle(ActionEvent event) {
Button bu = (Button)event.getSource();
System.out.println("你点了" + bu.getText() + " " + i + "下");
i++;
}
});;
//处理多击事件
b2.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
System.out.println("鼠标按键=" + arg0.getButton().name());
if(arg0.getClickCount() == 2 && arg0.getButton().equals(MouseButton.PRIMARY)) {
System.out.println("双击b2");
}
}
});
//处理键盘事件(按下)
b2.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent arg0) {
if(arg0.getCode().equals(KeyCode.A)) {//只对按下A有效
System.out.println("你按下了" + arg0.getCode().getName());
}
}
});
//处理键盘事件(松开)
b2.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent arg0) {
System.out.println("你松开了" + arg0.getCode().name());
}
});
Group root = new Group();
root.getChildren().addAll(b1, b2);
Scene scene = new Scene(root);
//设置快捷键
KeyCombination kccb = new KeyCodeCombination(KeyCode.Y, KeyCombination.SHORTCUT_DOWN);
scene.getAccelerators().put(kccb, new Runnable() {
@Override
public void run() {
System.out.println("你按下了ctrl + y");
b1.fire();//调用b1的监听事件
}
});
primaryStage.setScene(scene);
primaryStage.setTitle("JavaFx");
primaryStage.setHeight(600);
primaryStage.setWidth(800);
primaryStage.show();
}