昨天弄了checkbox,我本来是弄的checkbox.fxml文件的controller和addgroup.fxml一样,这样就出bug了,因为我加载checkbox组件是写在for循环里的,那他连接controller不也一直循环?所以这样就导致我每次想创建群聊的时候,都会“未响应”
解决方法就是手写点击checkbox事件,而不是用controller
我把将所有好友的checkbox都写在一个函数里,方便调用,因为要多次用到
public void loadf(){
//获取该用户的所有好友
String[] friends = fimp.gaininfo(user.getAcountnum());
//将该用户的好友的控件一个一个做出来
for(int i = 0; i < fimp.gainfnum(user.getAcountnum()); i ++){
try {
String id = imp.getinfo(friends[i]).getId();
CheckBox cb = FXMLLoader.load(getClass().getResource("checkbox.fxml"));
cb.setText(id);
friendVBox.getChildren().add(cb);
AnchorPane ap = creatmembers(id);
cb.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if(newValue){
members.getChildren().add(ap);
nums[0]++;
num.setText("已选联系人:("+ nums[0] +")");
}else{
members.getChildren().remove(ap);
nums[0]--;
num.setText("已选联系人:("+ nums[0] +")");
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
再来实现输入好友的账号来查找好友
在textFiled的onaction里写判断语句,如果有好友的账号是TextFiled.getText()的话,就清空friendvbox,再将这个搜索到的好友账号的checkbox添加到friendvbox
获得到了这个好友之后,万一还想查看所有好友的checkbox怎么办呢?
再给TextField添加一个事件
-
On Mouse Clicked:当鼠标点击时触发事件。
在该事件里,先清空friendvbox,再调用loadf函数
javafx
scene builder(code)事件
键盘
On Key Pressed:当键盘按键被按下的时候触发事件。
On Key Released:当键盘按键按下后被释放的时候触发事件。
On Key Typed:只会响应文字输入键,如字母、数字和标点符号等,它不会响应CTRL/ENTER/F1等功能键。
鼠标
On Context Menu Requested:当鼠标右键单击时触发该事件
On Mouse Clicked:当鼠标点击时触发事件
On Mouse Dragged:当鼠标拖动该控件时触发事件
On Mouse Entered:当鼠标进入该控件范围内触发
On Mouse Exited:当鼠标离开该控件范围内触发
On Mouse Moved:当鼠标在控件范围内移动触发
On Mouse Pressed:当鼠标按下左键或右键时触发事件
On Mouse Released:当鼠标松开按键时触发事件
On Scroll:当滚动鼠标滚轮时触发事件
On Scroll Started:定义检测到滚动手势时要调用的事件
On Scroll Finished:定义滚动手势结束时要调用的事件