随手记录--java fx(1)

本文介绍了JavaFX的基础知识,包括场景图的概念,如何创建Scene和Stage,以及常用UI组件如Label、Button、RadioButton和CheckBox的使用方法,涉及到事件监听和样式设置。还提及了ToggleGroup用于管理单选按钮和开关按钮的行为。
摘要由CSDN通过智能技术生成
java FX
场景图:显示在整体框架的最顶层,是整体JavaFX应用的起始点。它是一个分层次的树状结构的结点来表示应用用户接口的可视化元素。
一个场景中单独的元素叫节点。每一个节点都有一个ID,样式类和边界值。
Scene相当于画布,也就是根节点,Stage就是窗口,将scene绑定到主窗口中
public void start(Stage primaryStage)throws Exception{
Parent root=FXMLLoader.load(getClass().getResource("first.fxml"));
Scene scene=new Scene(root);
primaryStage.setScene(scene);
 primaryStage.setTitle("window");
 primaryStage.show();
}


获取UI控件:
private void initView(Parent parent){
this.组件=(组件类)parent.lookup("#+在fxml中定义的id");
}


事件监听绑定:
this.组件.setOnAction(new EventHandler<ActionEvent>(){
public void handle(ActionEvent event){
}
});
通过定义Controller类进行控件事件绑定:创建controller类,Controller类的控件定义名称应当与fxml文件中控件id一致,事件监听方法名称应当与onAction=”#xxxxx”中的xxxxx一致,并且用@FXML注解修饰;然后在fxml文件的根节点添加Pane fx:controller="xxxxx"表示该布局文件对应的Controller是哪一个




UI组件:


Label:标签
//空label
Label label=new Labei();
//带文本的
Label label=new Label("Search");
//带文本和图标的,需要先创建Image
Image image = new Image(getClass().getResourceAsStream("labels.jpg"));
Label label=new Label("Search", new ImageView(image));
使用Labeled类的以下方法来设置或者修改文本以及图标:setText(String text)指定文本内容,setGraphic(Node graphic)指定图标


Button:按钮,!当鼠标点击按钮时,需要执行一个Action,使用setOnAction来定义,button.setOnAcion((ActionEvent e)->{lamada方法表达内容;});!
//一个空Button
Button button = new Button();
//一个指定了文本标题的Button
Button button = new Button("Accept");
//一个指定了文本标题和图标的Button
Image imageOk = new Image(getClass().getResourceAsStream("ok.png"));
Button button = new Button("Accept", new ImageView(imageOk));
使用类的以下方法来设置或者修改文本以及图标:setText(String text)指定文本内容,setGraphic(Node graphic)指定图标
可以为Button添加javafx.scene.effect包下的任何特效来增强视觉效果button.setEffect(new DropShadow());也可以使用Skin类中定义的CSS样式来增强按钮的视觉外观:
// CSS文件中的代码
.button1{
    -fx-font: 22 arial;
    -fx-base: #b6e7c9;   
}


// ButtonSample.java中的代码
button1.getStyleClass().add("button1");






Radio Button:单选按钮,类位于JavaFX SDK的 javafx.scene.control 包中
RadioButton是ToggleButton的一个特殊实现,一个Radio Button可以被选中或者取消选中,典型的用法是将多个Radio Button放在一个组中,同一时间内其中只有一个Button可以被选中。这正是Radio Button区别于Toggle Button(开关按钮) 的行为,因为一个组中的所有Toggle Button可以同时全都取消选中。通过isSelected方法判断是否被选择,通过setSelected方法选择,用button.requestFocus()方法来更改焦点getSelectedToggle得到选中的按钮,通过调用getUserData方法提取User Data,setUserData设置User Data
//标签为空的Radio Button
RadioButton rb = new RadioButton();
//设置标签文字
rb1.setText("str");
//指定标签文字的Radio Button
RadioButton rb = new RadioButton("str");
//带图像的Radio Button
Image image = new Image(getClass().getResourceAsStream("ok.jpg"));
RadioButton rb = new RadioButton("Agree");
rb.setGraphic(new ImageView(image));
//添加进ToggleGroup的方法:先创建Group,然后分别创建RB,在通过button.setToggleGroup(group)添加进去,通过setSelected(true)表示被选择
设置监听器
final ToggleGroup group = new ToggleGroup();
group.selectedToggleProperty().addListener(
    (ObservableValue<? extends Toggle> ov, Toggle old_Toggle,
    Toggle new_Toggle) -> {
});




Toggle Button:开关按钮,多个TB按钮组合在一个Group中,但只一个被选择
//一个不带任何文本或图标的
ToggleButton tb = new ToggleButton();
//一个带有文本的
ToggleButton tb = new ToggleButton("2");
//一个带有文本和图标
Image image = new Image(getClass().getResourceAsStream("icon.png"));
ToggleButton tb= new ToggleButton ("3", new ImageView(image));
//添加进ToggleGroup的方法:先创建Group,然后分别创建TB,在通过button.setToggleGroup(group)添加进去,通过setSelected(true)表示被选择
//设置监听器
final ToggleGroup Group = new ToggleGroup();
Group.selectedToggleProperty().addListener(            
    (ObservableValue<? extends Toggle> ov, 
    Toggle toggle, Toggle new_toggle) -> {
});




Checkbox:类的setSelected 和setIndeterminate 方法来为CheckBox指定状态,CheckBox对象的allowIndeterminate属性决定了Checkbox是否在所有的三个状态之间循环变换:选中的,非选中的,未定义的。如果属性值是true,Checkbox将在这三个状态之间循环。如果属性值是false,Checkbox将在选中和非选中状态之间循环
//一个不带文字标题的checkbox
CheckBox cb= new CheckBox();
//一个带有文字标题的checkbox
CheckBox cb= new CheckBox("Second");
cb.setText("First");
cb.setSelected(true);
//设置监听器
cb.selectedProperty().addListener(
        (ObservableValue<? extends Boolean> ov,
            Boolean old_val, Boolean new_val) -> {                
    });




Choice Box:
创建一个选项列表并将其传入到ChoiceBox类的一个构造方法中。这个选项列表使用ObservableList来指定其内容
ChoiceBox cb=new ChoiceBox(FXCollections.observableArrayList(
    "First", "Second", "Third")
);
//有文字选项和分隔符的Choice Box
ChoiceBox cb = new ChoiceBox();
cb.setItems(FXCollections.observableArrayList(
    "New Document", "Open ", 
    new Separator(), "Save", "Save as")
);
//设置监听器,通过连续调用getSelectionModel 和selectedIndexProperty方法得到当前被选项所索引。 其中getSelectionModel方法返回被选项, 而selectedIndexProperty方法返回变量名为cb 的ChoiceBox 的SELECTED_INDEX 属性。
cb.getSelectedModel().selectedIndexProperty().addListener(
(ObservableValue<? extends Boolean> ov,Number old_val,Number new_val)->{
});
//可以指定一个提示信息(tooltip),cb.setTooltip(new Tooltip("str"));


Text Field:通过和一个Label组合来指示在文本框中应该输入的内容类型,.setPromptText来提示内容,使用pane容器将组件添加到相应的Scene中,xxxPane.setConstraints( , , );pane.getChildren().add(组件);
//创建一个Text Field
Label label1 = new Label("Name:");
TextField textField = new TextField ();
HBox hb = new HBox();
hb.getChildren().addAll(label1, textField);
hb.setSpacing(10);
//其余方法:copy(); cut();selectAll();paste()




Password  Field:密码框,同上种




Scroll Bar:创建可滚动的面板和视图,有三个区域,三个区域:滑块(Thumb),左右(或上下)按钮和滚动槽(Track),初始化时默认水平,通过setOrientation方法来设置其为垂直,
ScrollBar sc = new ScrollBar();
sc.setMin(0);
sc.setMax(100);
sc.setValue(50);




Scroll Pane:滚动面板




ListView:一个可滚动的列表,通过setItems方法来填充列表的内容。你也可以通过setCellFactory方法来为列表中的选项创建一个视图。要改变list
view控件的宽度和高度,可以使用setPrefHeight和setPrefWidth方法。通过SelectionModel和FocusModel类来随时跟踪ListView对象中被选择和获得焦点的选项
//创建一个List View控件
ListView<String> list = new ListView<>();
ObservableList<String> items =FXCollections.observableArrayList ("");
list.setItems(items);
//获得对象的被选择和焦点项,如果要多选则要,listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
getSelectionModel().getSelectedIndex()返回在单选(single-selection)模式下当前被选中的列表项索引号。
getSelectionModel().getSelectedItem()返回当前被选中的列表项。
getFocusModel().getFocusedIndex()返回当前获得焦点的列表项索引号。
getFocusModel().getFocusedItem()返回当前获得焦点的列表项。
//使用数据来填充LIST VIEW





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值