JAVAFX纯手写布局
主页面效果:
第一栏的效果:
工程目录:
package MessageBean; /**
*
* @author novo
*/
public class Message {
private String MMQBH; //密码器编号
private String SCCS; //生产厂商
private String ZT; //密码器状态
private int KHH; //客户号
private String KHMC; //客户名称
private String BHFX; //是否本行发行
private String FXRQ; //发行登记日期
private String CJR; //创建人
public Message(){};
public Message(String MMQBH,String SCCS,String ZT,int KHH,String KHMC,String BHFX,String FXRQ,String CJR){
this.MMQBH = MMQBH;
this.SCCS = SCCS;
this.ZT = ZT;
this.KHH = KHH;
this.KHMC = KHMC;
this.BHFX = BHFX;
this.FXRQ = FXRQ;
this.CJR = CJR;
};
/**
* @return the MMQBH
*/
public String getMMQBH() {
return MMQBH;
} /**
* @param MMQBH the MMQBH to set
*/
public void setMMQBH(String MMQBH) {
this.MMQBH = MMQBH;
} /**
* @return the SCCS
*/
public String getSCCS() {
return SCCS;
} /**
* @param SCCS the SCCS to set
*/
public void setSCCS(String SCCS) {
this.SCCS = SCCS;
} /**
* @return the ZT
*/
public String getZT() {
return ZT;
} /**
* @param ZT the ZT to set
*/
public void setZT(String ZT) {
this.ZT = ZT;
} /**
* @return the KHH
*/
public int getKHH() {
return KHH;
} /**
* @param KHH the KHH to set
*/
public void setKHH(int KHH) {
this.KHH = KHH;
} /**
* @return the KHMC
*/
public String getKHMC() {
return KHMC;
} /**
* @param KHMC the KHMC to set
*/
public void setKHMC(String KHMC) {
this.KHMC = KHMC;
} /**
* @return the BHFX
*/
public String getBHFX() {
return BHFX;
} /**
* @param BHFX the BHFX to set
*/
public void setBHFX(String BHFX) {
this.BHFX = BHFX;
} /**
* @return the FXRQ
*/
public String getFXRQ() {
return FXRQ;
} /**
* @param FXRQ the FXRQ to set
*/
public void setFXRQ(String FXRQ) {
this.FXRQ = FXRQ;
} /**
* @return the CJR
*/
public String getCJR() {
return CJR;
} /**
* @param CJR the CJR to set
*/
public void setCJR(String CJR) {
this.CJR = CJR;
} }
package Message; import MessageBean.Message;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList; /**
*
* @author Administrator
*/
public class JsonMethod {
public static ObservableList<Message> getList(){
ObservableList<Message> list = FXCollections.observableArrayList();
Message msg1 = new Message();
msg1.setMMQBH("12453464");
msg1.setSCCS("四川xx");
msg1.setZT("正常");
msg1.setKHH(1001);
msg1.setKHMC("zhangsan");
msg1.setBHFX("是");
msg1.setFXRQ("2013-08-20 10:09:25");
msg1.setCJR("test1"); Message msg2 = new Message();
msg2.setMMQBH("8765432");
msg2.setSCCS("四川xx");
msg2.setZT("锁定");
msg2.setKHH(1090);
msg2.setKHMC("lisi");
msg2.setBHFX("是");
msg2.setFXRQ("2013-08-20 18:09:25");
msg2.setCJR("test4"); list.add(msg1);
list.add(msg2);
return list;
}
}
package mylayoutsample; import Message.JsonMethod;
import MessageBean.Message;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Separator;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage; /**
*
* @author novo
*/
public class MyLayoutsample extends Application {
public Button tree1btn1 = new Button();
public Button tree1btn2 = new Button(); public Button tree2btn1 = new Button();
public Button tree2btn2 = new Button();
public Button tree2btn3 = new Button();
public Button tree2btn4 = new Button(); public Button tree3btn1 = new Button();
public Button tree3btn2 = new Button();
public Button tree3btn3 = new Button();
public Button tree3btn4 = new Button(); public Button tree4btn1 = new Button();
public Button tree4btn2 = new Button();
public Button tree4btn3 = new Button();
public Button tree4btn4 = new Button();
public Button tree4btn5 = new Button(); /**
* 设置根节点布局
* @return 返回布局
*/
public BorderPane setBorder(){
BorderPane layout = new BorderPane();
// layout.setTop(new Rectangle(200, 50, Color.DARKCYAN));
// layout.setBottom(new Rectangle(200, 50, Color.DARKCYAN));
// layout.setCenter(new Rectangle(100, 100, Color.MEDIUMAQUAMARINE));
// layout.setLeft(new Rectangle(50, 100, Color.DARKTURQUOISE));
// layout.setRight(new Rectangle(50, 100, Color.DARKTURQUOISE));
return layout;
}
/**
* 设置顶部
* @param layout 传入布局
*/
public void settop(BorderPane layout){
HBox hbox = new HBox();
hbox.setPadding(new Insets(15, 12, 15, 12));
hbox.setSpacing(10);
hbox.setStyle("-fx-background-color: #336699");
Label toplabel = new Label("XXXX科技有限公司");
toplabel.setFont(new Font(35));
toplabel.setTextFill(Color.BLACK);
hbox.getChildren().add(toplabel); VBox vbox = new VBox();
Separator sper = new Separator();
sper.setOrientation(Orientation.HORIZONTAL);
sper.setStyle(" -fx-background-color: #e79423;-fx-background-radius: 2;");
vbox.getChildren().addAll(hbox,sper); layout.setTop(vbox);
}
/**
* 设置左边部分
* @param layout 传入的布局
*/
public void setleft(BorderPane layout){
//第一个根节点
VBox vb1 = new VBox(5);
vb1.setPadding(new Insets(15, 12, 15, 12));
tree1btn1.setText("支付密码器管理");
tree1btn1.setPrefSize(150, 20); tree1btn2.setText("支付密码账户管理");
tree1btn2.setPrefSize(150, 20); vb1.getChildren().addAll(tree1btn1,tree1btn2);
TitledPane node1 = new TitledPane("支付密码器管理",vb1); //第二个根节点
VBox vb2 = new VBox(5);
vb2.setPadding(new Insets(15, 12, 15, 12));
tree2btn1.setText("机构管理");
tree2btn1.setPrefSize(150, 20); tree2btn2.setText("用户管理管理");
tree2btn2.setPrefSize(150, 20); tree2btn3.setText("核验规则设置");
tree2btn3.setPrefSize(150, 20); tree2btn4.setText("企业客户管理");
tree2btn4.setPrefSize(150, 20); vb2.getChildren().addAll(tree2btn1,tree2btn2,tree2btn3,tree2btn4);
TitledPane node2 = new TitledPane("系统管理",vb2); //第三个根节点
VBox vb3 = new VBox(5);
vb3.setPadding(new Insets(15, 12, 15, 12));
tree3btn1.setText("票据核验");
tree3btn1.setPrefSize(150, 20); tree3btn2.setText("密码器状态");
tree3btn2.setPrefSize(150, 20); tree3btn3.setText("账户分布情况");
tree3btn3.setPrefSize(150, 20); tree3btn4.setText("密码器中账户");
tree3btn4.setPrefSize(150, 20); vb3.getChildren().addAll(tree3btn1,tree3btn2,tree3btn3,tree3btn4);
TitledPane node3 = new TitledPane("工具",vb3); //第四个根节点
VBox vb4 = new VBox(5);
vb4.setPadding(new Insets(15, 12, 15, 12));
tree4btn1.setText("用户日志");
tree4btn1.setPrefSize(150, 20); tree4btn2.setText("密码器日志");
tree4btn2.setPrefSize(150, 20); tree4btn3.setText("票据日志");
tree4btn3.setPrefSize(150, 20); tree4btn4.setText("账号签约明细");
tree4btn4.setPrefSize(150, 20); tree4btn5.setText("密码器发行情况明细");
tree4btn5.setPrefSize(150, 20); vb4.getChildren().addAll(tree4btn1,tree4btn2,tree4btn3,tree4btn4,tree4btn5);
TitledPane node4 = new TitledPane("报表与日志管理",vb4); //设置树形根节点
Accordion accordion = new Accordion();
accordion.getPanes().add(node1);
accordion.getPanes().add(node2);
accordion.getPanes().add(node3);
accordion.getPanes().add(node4); HBox hb = new HBox();
Separator sper = new Separator();
sper.setOrientation(Orientation.VERTICAL);
sper.setStyle(" -fx-background-color: #e79423;-fx-background-radius: 2;");
hb.getChildren().addAll(accordion,sper); //将树形节点加如布局的左边
layout.setLeft(hb); }
/**
* 设置中间部分
* @param layout 传入的布局
*/
public void setcenter(final BorderPane layout){
Label testt = new Label("默认页面");
layout.setCenter(testt);
//树节点1的第一个按钮功能页面的设置
tree1btn1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
layout.setCenter(settree1btn1centerlayout(JsonMethod.getList()));
}
});
//树节点1的第二个按钮功能页面的设置
tree1btn2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
layout.setCenter(settree1btn2centerlayout());
}
});
}
/**
* 树节点1的第一个按钮的页面设置
* @return 返回一个竖直方向的布局
*/
public VBox settree1btn1centerlayout(final ObservableList<Message> list){
//最上面一排按钮
HBox tophb = new HBox(5);
tophb.setPadding(new Insets(15, 12, 15, 12));
Button btn1 = new Button("发行");
btn1.setPrefSize(60, 20);
Button btn2 = new Button("解锁");
btn2.setPrefSize(60, 20);
Button btn3 = new Button("停用");
btn3.setPrefSize(60, 20);
Button btn4 = new Button("启用");
btn4.setPrefSize(60, 20);
Button btn5 = new Button("挂失");
btn5.setPrefSize(60, 20);
tophb.getChildren().addAll(btn1,btn2,btn3,btn4,btn5); //中间一行
VBox centervb = new VBox(5);
centervb.setPadding(new Insets(15, 12, 5, 12));
Label labelct = new Label("查询条件"); //外面标题
labelct.setFont(new Font(15));
HBox center_hb = new HBox(5);
center_hb.setPadding(new Insets(5, 12, 15, 0));
Label label1 = new Label("密码器编号");
Label label2 = new Label("密码器账户");
Label label3 = new Label("客户号");
TextField tf1= new TextField();
tf1.setPrefColumnCount(10); //设置偏爱的文本框宽度
TextField tf2= new TextField();
tf2.setPrefColumnCount(10); //设置偏爱的文本框宽度
TextField tf3= new TextField();
tf3.setPrefColumnCount(10); //设置偏爱的文本框宽度
Button btnquery = new Button("查询");
btnquery.setPrefSize(60, 20);
center_hb.getChildren().addAll(label1,tf1,label2,tf2,label3,tf3,btnquery);
centervb.getChildren().addAll(labelct,center_hb); //下面表格 TableView<Message> tableview = new TableView<>();
TableColumn clo1 = new TableColumn();
clo1.setText("密码器编号");
clo1.setCellValueFactory(new PropertyValueFactory("MMQBH"));
clo1.setMinWidth(100);
// tableview.getColumns().add(clo1);
TableColumn clo2 = new TableColumn();
clo2.setText("生产厂商");
clo2.setCellValueFactory(new PropertyValueFactory("SCCS"));
clo2.setMinWidth(100);
// tableview.getColumns().add(clo2);
TableColumn clo3 = new TableColumn();
clo3.setText("密码器状态");
clo3.setCellValueFactory(new PropertyValueFactory("ZT"));
clo3.setMinWidth(100);
// tableview.getColumns().add(clo3);
TableColumn clo4 = new TableColumn();
clo4.setText("客户号");
clo4.setCellValueFactory(new PropertyValueFactory("KHH"));
clo4.setMinWidth(100);
// tableview.getColumns().add(clo4);
TableColumn clo5 = new TableColumn();
clo5.setText("客户名称");
clo5.setCellValueFactory(new PropertyValueFactory("KHMC"));
clo5.setMinWidth(100);
// tableview.getColumns().add(clo5);
TableColumn clo6 = new TableColumn();
clo6.setText("是否本行发行");
clo6.setCellValueFactory(new PropertyValueFactory("BHFX"));
clo6.setMinWidth(100);
// tableview.getColumns().add(clo6);
TableColumn clo7 = new TableColumn();
clo7.setText("发行/登记日期");
clo7.setCellValueFactory(new PropertyValueFactory("FXRQ"));
clo7.setMinWidth(100);
// tableview.getColumns().add(clo7);
TableColumn clo8 = new TableColumn();
clo8.setText("创建人");
clo8.setCellValueFactory(new PropertyValueFactory("CJR"));
clo8.setMinWidth(100);
// tableview.getColumns().add(clo8);
tableview.setItems(list);
tableview.getColumns().addAll(clo1,clo2,clo3,clo4,clo5,clo6,clo7,clo8);
// tableview.setEditable(true);
VBox tavbox = new VBox();
tavbox.setSpacing(5);
tavbox.setPadding(new Insets(10, 0, 0, 10));
tavbox.getChildren().addAll(tableview); //添加一行table的功能
final TextField tx1 = new TextField();
tx1.setPromptText("密码器编号");
tx1.setMaxWidth(clo1.getPrefWidth());
final TextField tx2 = new TextField();
tx2.setPromptText("生产厂商");
tx2.setMaxWidth(clo2.getPrefWidth());
final TextField tx3 = new TextField();
tx3.setPromptText("密码器状态");
tx3.setMaxWidth(clo3.getPrefWidth());
final TextField tx4 = new TextField();
tx4.setPromptText("客户号");
tx4.setMaxWidth(clo4.getPrefWidth());
final TextField tx5 = new TextField();
tx5.setPromptText("客户名称");
tx5.setMaxWidth(clo5.getPrefWidth());
final TextField tx6 = new TextField();
tx6.setPromptText("是否本行发行");
tx6.setMaxWidth(clo6.getPrefWidth());
final TextField tx7 = new TextField();
tx7.setPromptText("发行/登记日期");
tx7.setMaxWidth(clo7.getPrefWidth());
final TextField tx8 = new TextField();
tx8.setPromptText("创建人");
tx8.setMaxWidth(clo8.getPrefWidth()); final Button addButton = new Button("添加记录");
addButton.setPrefSize(100, 20);
addButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
list.add(new Message(
tx1.getText(),
tx2.getText(),
tx3.getText(),
Integer.parseInt(tx4.getText()),
tx5.getText(),
tx6.getText(),
tx7.getText(),
tx8.getText()));
tx1.clear();
tx2.clear();
tx3.clear();
tx4.clear();
tx5.clear();
tx6.clear();
tx7.clear();
tx8.clear();
}
});
HBox addbox = new HBox(10);
addbox.setPadding(new Insets(10, 10, 10, 10));
addbox.getChildren().addAll(tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,addButton); //分割线
Separator sper1 = new Separator();
sper1.setOrientation(Orientation.HORIZONTAL);
Separator sper2 = new Separator();
sper2.setOrientation(Orientation.HORIZONTAL); VBox vblast = new VBox();
vblast.getChildren().addAll(tophb,sper1,centervb,sper2,tavbox,addbox);
return vblast;
}
/**
* 树节点1的第二个按钮的页面设置
* @return 返回一个竖直方向的布局
*/
public VBox settree1btn2centerlayout(){
VBox vblast = new VBox();
Label test = new Label("支付密码账户管理器的页面");
vblast.getChildren().addAll(test);
vblast.setStyle("-fx-background-color: #221489");
return vblast;
}
@Override
public void start(Stage primaryStage) {
BorderPane root = setBorder();
settop(root);
setleft(root);
setcenter(root);
Scene scene = new Scene(root,1000,600);
primaryStage.setTitle("Layout sample");
primaryStage.setScene(scene);
primaryStage.show();
} public static void main(String[] args) {
launch(args);
}
}
上面有一个table的数据绑定知识点。。。。
JAVAFX纯手写布局的更多相关文章
- springmvc 动态代理 JDK实现与模拟JDK纯手写实现。
首先明白 动态代理和静态代理的区别: 静态代理:①持有被代理类的引用 ② 代理类一开始就被加载到内存中了(非常重要) 动态代理:JDK中的动态代理中的代理类是动态生成的.并且生成的动态代理类为$Pr ...
- 简易-五星评分-jQuery纯手写
超级简单的评分功能,分为四个步骤轻松搞定: 第一步: 引入jquery文件:这里我用百度CDN的jquery: <script src="http://apps.bdimg.com/l ...
- vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件
vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源 ...
- 超级简单的jQuery纯手写五星评分效果
超级简单的评分功能,分为四个步骤轻松搞定: 第一步: 引入jquery文件:这里我用百度CDN的jquery: <script src="http://apps.bdimg.com/l ...
- 纯手写Myatis框架
1.接口层-和数据库交互的方式 MyBatis和数据库的交互有两种方式: 使用传统的MyBatis提供的API: 使用Mapper接口: 2.使用Mapper接口 MyBatis 将配置文件中的每一个 ...
- SQL纯手写创建数据库到表内内容
建表啥的只点点鼠标,太外行了,不如来看看我的纯手写,让表从无到有一系列:还有存储过程临时表,不间断的重排序: 一:建数据库 create Database Show on primary ( name ...
- 纯手写SpringMVC到SpringBoot框架项目实战
引言 Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 通过这种方式,springboot ...
- 纯手写实现ajax分页功能
前言 最近用到了这个功能,百度大半天,网上的不是有各种问题就是需要引入其他的插件,无奈,只能自己写,大致功能已经完成.前端页面用bootstrap做样式,分页功能用ajax实现,没用其他插件哦,只引入 ...
- qt之旅-1纯手写Qt界面
通过手写qt代码来认识qt程序的构成,以及特性.设计一个查找对话框.以下是设计过程 1 新建一个empty qt project 2 配置pro文件 HEADERS += \ Find.h QT += ...
随机推荐
- an interview question(2)
感觉现在好多面试题还是很注重基础的,今天面试时就遇到这题,回来一查后才知道此题是国内某著名通信公司的一道机试题:) 给定一个数组input[ ],如果数组长度n为奇数,则将数组中最大的元素放到 out ...
- MFC编程入门之十九(对话框:颜色对话框)
在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用是用来选择颜色.MF ...
- (转)javascript 奇淫巧技44招
1.首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 2.使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但 ...
- MySQL查询分析器EXPLAIN或DESC
转载:http://chenzehe.iteye.com/blog/1682081 MySQL可以通过EXPLAIN或DESC来查看并分析SQL语句的执行情况,如下需要计算2006年所有公司的销售额, ...
- 贪心算法(Greedy Algorithm)
参考: 五大常用算法之三:贪心算法 算法系列:贪心算法 贪心算法详解 从零开始学贪心算法 一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以 ...
- nodejs&npm等概念梳理
nodejs node node版本 npm nvmw\gnvm等多版本管理 CommonJS.AMD.requirejs grunt.gulp package.json .npmrc npm\nod ...
- 搭建nginx+tomcat+Java的负载均衡环境
转载 未测 供参考 另外这篇文章也不错.http://blog.csdn.net/wang379275614/article/details/47778201 一.简介: Tomcat在高并发环境下 ...
- python——赋值与深浅拷贝
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- [iOS]浅谈NSRunloop工作原理和相关应用
一. 认识NSRunloop 1.1 NSRunloop与程序运行 那么具体什么是NSRunLoop呢?其实NSRunLoop的本质是一个消息机制的处理模式.让我们首先来看一下程序的入口——main ...
- jmeter接口测试
一.Jmeter简介 Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,不像loadrunner那样体积大,是一个比较轻量级的测试工具,使用起来非常的简单 ...