一基础题
15.1
什么是事件源对象?什么是事件对象?描述事件源对象和事件对象之间的关系。
产生一个事件并且触发他的组件称为事件源对象
事件源对象的实例是事件
15.4 请说明如何注册一个处理器对象,以及如何实现一个处理器接口?
通过源对象注册,注册方法依赖于事件类型,对ActionEvent而言,方法是setOnAction,对于鼠标按下事件,方法是setOnMousePressed,对于按键事件,方法是setOnKeyPressed.
Class ……implementsEventHandler
15.5 EventHandler 接口的处理器方法是什么?
Handle
15.6 对一个按钮注册一个ActionEvent 处理器的注册方法是什么?
setOnAction
二编程题
15.1( 选取4 张卡牌)请写一个程序,可以让用户通过单击Refiesh
按钮以显示从一副52 张卡牌选取的4 张卡牌,如图15-24a所示。
import javafx.application.Application;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.geometry.*;
import javafx.scene.layout.*;
import javafx.scene.image.*;
import java.util.*;
public class getcards extends Application {
@Override
public void start(Stage primaryStage){
VBox pane=new VBox(5);
pane.setPadding(new Insets(5,5,5,5));
Cardspane cards=new Cardspane();
pane.getChildren().add(cards);
Button btRefresh = new Button("Refresh");
pane.getChildren().add(btRefresh);
pane.setAlignment(Pos.CENTER);
VBox.setMargin(btRefresh, new Insets(5,5,5,5));
btRefresh.setOnAction(e->{cards.refresh();});
Scene scene=new Scene(pane,400,400);
primaryStage.setTitle("etcards");
primaryStage.setScene(scene);
primaryStage.show();
}
public class Cardspane extends HBox{
private Integer[] cardsNum ={1,2,3,4,5,6,7,8,9
,10,11,12,13,14,15,16,17,18,19,120,21,22
,23,24,25,26,27,28,29,30,31,32,33,34,35,
36,37,38,39,40,41,42,43,44,45,46,47,48,49,50
,51,52,53,54
};
private ArrayList<Integer>list =new ArrayList<>(Arrays.asList(cardsNum));
private ImageView p1;
private ImageView p2;
private ImageView p3;
private ImageView p4;
public void CardsPane()
{
setSpacing(5);
Collections.shuffle(list);
p1=new ImageView("实验五/card/"+Integer.valueOf(list.get(0))+".png");
p2=new ImageView("实验五/card/"+Integer.valueOf(list.get(1))+".png");
p3=new ImageView("实验五/card/"+Integer.valueOf(list.get(2))+".png");
p4=new ImageView("实验五/card/"+Integer.valueOf(list.get(3))+".png");
super.getChildren().addAll(p1,p2,p3,p4);
}
public void refresh(){
Collections.shuffle(list);
super.getChildren().removeAll(p1,p2,p3,p4);
p1=new ImageView("实验五/card/"+Integer.valueOf(list.get(0))+".png");
p2=new ImageView("实验五/card/"+Integer.valueOf(list.get(1))+".png");
p3=new ImageView("实验五/card/"+Integer.valueOf(list.get(2))+".png");
p4=new ImageView("实验五/card/"+Integer.valueOf(list.get(3))+".png");
super.getChildren().addAll(p1,p2,p3,p4);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
launch(args);
}
}
15.2 (旋转一个四边形)请写一个程序,在Rotate 按钮被单击时,将一个四边形向右旋转15 度,如图15-24b 所示。
package 实验五.card;
import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.paint.*;
import javafx.scene.shape.*;
import javafx.scene.control.*;
import javafx.geometry.*;
public class rebolverectangle extends Application {
private double angle=0;
@Override
public void start(Stage primaryStage)
{
VBox pane=new VBox(10);
pane.setPadding(new Insets(20,20,20,20));
Rectangle re =new
Rectangle(50,50,20,40);
re.setFill(Color.WHITE);
re.setStroke(Color.BLACK);
Button btRotate = new Button("Rotate");
pane.getChildren().addAll(re,btRotate);
pane.setAlignment(Pos.CENTER);
btRotate.setOnAction(e->{changeRectangle(re);});
Scene scene=new Scene(pane,400,400);
primaryStage.setTitle("旋转矩形");
primaryStage.setScene(scene);
primaryStage.show();
}
public void changeRectangle(Rectangle re){
angle+=15;
re.setRotate(angle);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
launch(args);
}
}