JAVAFX纯手写布局

来源:互联网 发布:underscore.js 下载 编辑:程序博客网 时间:2024/04/29 15:24

主页面效果:


第一栏的效果:



工程目录:


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的数据绑定知识点。。。。