Java开发桌面程序学习(三)——基于Jfoenix库的JFXDialog封装仿Android对话框的工具DialogBuilder
程序员文章站
2022-03-22 19:04:44
对话框的封装使用 "DialogBuilder的Github" 前言 登录需要弹出登录对话框,但是,Jfoenix库使用对话框比较难受,还得动态去生成布局,我想起了Android的对话框生成,便是封装了一个,一行代码即可生成 使用 使用的话,直接一行代码即可 ,下面的几种常用的情况! 只有一个确定按 ......
对话框的封装使用
前言
登录需要弹出登录对话框,但是,jfoenix库使用对话框比较难受,还得动态去生成布局,我想起了android的对话框生成,便是封装了一个,一行代码即可生成
使用
使用的话,直接一行代码即可 ,下面的几种常用的情况!
- 只有一个确定按钮,按下esc可以退出
//tfoutpath是一个控件(controller) new dialogbuilder(tfoutpath).settitle("提示").setmessage("登录成功").setnegativebtn("确定").create();
- 确定和取消按钮,有个
onclicklistener
监听器负责执行点击按钮后执行的操作
new dialogbuilder(tfoutpath).setnegativebtn("取消", new dialogbuilder.onclicklistener() { @override public void onclick() { //点击取消按钮之后执行的动作 } }).setpositivebtn("确定", new dialogbuilder.onclicklistener() { @override public void onclick() { //点击确定按钮之后执行的动作 } }).settitle("提示").setmessage("hello world").create();
- 更改文字颜色
new dialogbuilder(startbtn).settitle("提示").setmessage("hello world").setpositivebtn("确定", "#ff3333").setnegativebtn("取消", "#00ff00").create();
后期有空再更新,更新常用的对话框布局
代码
package wan.utils; import com.jfoenix.controls.jfxalert; import com.jfoenix.controls.jfxbutton; import com.jfoenix.controls.jfxdialoglayout; import com.sun.istack.internal.nullable; import javafx.scene.control.control; import javafx.scene.control.label; import javafx.scene.layout.vbox; import javafx.scene.paint.paint; import javafx.stage.modality; import javafx.stage.stage; import javafx.stage.window; /** * @author starsone * @date create in 2019/6/2 0002 20:51 * @description */ public class dialogbuilder { private string title, message; private jfxbutton negativebtn = null; private jfxbutton positivebtn = null; private window window; private jfxdialoglayout jfxdialoglayout = new jfxdialoglayout(); private paint negativebtnpaint = paint.valueof("#747474");//否定按钮文字颜色,默认灰色 private paint positivebtnpaint = paint.valueof("#0099ff"); private jfxalert<string> alert; /** * 构造方法 * * @param control 任意一个控件 */ public dialogbuilder(control control) { window = control.getscene().getwindow(); } public dialogbuilder settitle(string title) { this.title = title; return this; } public dialogbuilder setmessage(string message) { this.message = message; return this; } public dialogbuilder setnegativebtn(string negativebtntext) { return setnegativebtn(negativebtntext, null, null); } /** * 设置否定按钮文字和文字颜色 * * @param negativebtntext 文字 * @param color 文字颜色 十六进制 #fafafa * @return */ public dialogbuilder setnegativebtn(string negativebtntext, string color) { return setnegativebtn(negativebtntext, null, color); } /** * 设置按钮文字和按钮文字颜色,按钮监听器和 * * @param negativebtntext * @param negativebtnonclicklistener * @param color 文字颜色 十六进制 #fafafa * @return */ public dialogbuilder setnegativebtn(string negativebtntext, @nullable onclicklistener negativebtnonclicklistener, string color) { if (color != null) { this.negativebtnpaint = paint.valueof(color); } return setnegativebtn(negativebtntext, negativebtnonclicklistener); } /** * 设置按钮文字和点击监听器 * * @param negativebtntext 按钮文字 * @param negativebtnonclicklistener 点击监听器 * @return */ public dialogbuilder setnegativebtn(string negativebtntext, @nullable onclicklistener negativebtnonclicklistener) { negativebtn = new jfxbutton(negativebtntext); negativebtn.setcancelbutton(true); negativebtn.settextfill(negativebtnpaint); negativebtn.setbuttontype(jfxbutton.buttontype.flat); negativebtn.setonaction(addevent -> { alert.hidewithanimation(); if (negativebtnonclicklistener != null) { negativebtnonclicklistener.onclick(); } }); return this; } /** * 设置按钮文字和颜色 * * @param positivebtntext 文字 * @param color 颜色 十六进制 #fafafa * @return */ public dialogbuilder setpositivebtn(string positivebtntext, string color) { return setpositivebtn(positivebtntext, null, color); } /** * 设置按钮文字,颜色和点击监听器 * * @param positivebtntext 文字 * @param positivebtnonclicklistener 点击监听器 * @param color 颜色 十六进制 #fafafa * @return */ public dialogbuilder setpositivebtn(string positivebtntext, @nullable onclicklistener positivebtnonclicklistener, string color) { this.positivebtnpaint = paint.valueof(color); return setpositivebtn(positivebtntext, positivebtnonclicklistener); } /** * 设置按钮文字和监听器 * * @param positivebtntext 文字 * @param positivebtnonclicklistener 点击监听器 * @return */ public dialogbuilder setpositivebtn(string positivebtntext, @nullable onclicklistener positivebtnonclicklistener) { positivebtn = new jfxbutton(positivebtntext); positivebtn.setdefaultbutton(true); positivebtn.settextfill(positivebtnpaint); system.out.println("执行setpostivebtn"); positivebtn.setonaction(closeevent -> { alert.hidewithanimation(); if (positivebtnonclicklistener != null) { positivebtnonclicklistener.onclick();//回调onclick方法 } }); return this; } /** * 创建对话框并显示 * * @return jfxalert<string> */ public jfxalert<string> create() { alert = new jfxalert<>((stage) (window)); alert.initmodality(modality.application_modal); alert.setoverlayclose(false); jfxdialoglayout layout = new jfxdialoglayout(); layout.setheading(new label(title)); layout.setbody(new vbox(new label(this.message))); if (negativebtn != null && positivebtn != null) { layout.setactions(negativebtn,positivebtn); }else { if (negativebtn != null) { layout.setactions(negativebtn); } else if (positivebtn != null) { layout.setactions(positivebtn); } } alert.setcontent(layout); alert.showandwait(); return alert; } public interface onclicklistener { void onclick(); } }