Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
225 views
in Technique[技术] by (71.8m points)

java - JavaFX .How to make a line of summation(total row) in the bottom of the table?

How to make a line of summation in the bottom of the table(TreeTableView - JavaFX or TableView) ? (Sorry for my english) write an example please.

Picture(Totals) for example http://i.stack.imgur.com/uRLTZ.gif

Under each column I put a lable for display SUM.But this is no good for me.

Some FXML `

                                    <AnchorPane fx:id="anchorPaneWithTable" minHeight="0.0" minWidth="0.0" prefHeight="538.0" prefWidth="1275.0">
                                        <children>
                                            <TreeTableView fx:id="treeTableMainStat" prefHeight="386.0" prefWidth="1303.0" showRoot="false" AnchorPane.bottomAnchor="11.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
                                                <columns>
                                                    <TreeTableColumn fx:id="treeProgramNameCol" editable="false" prefWidth="230.0" resizable="false" text="AP Name" />
                                                    <TreeTableColumn fx:id="treeLastDateCol" editable="false" prefWidth="90.0" resizable="false" text="Last Date" />
                                                    <TreeTableColumn fx:id="treeLoginCol" editable="false" prefWidth="70.0" resizable="false" text="Login" />
                                                    <TreeTableColumn fx:id="treeAffiliateIDCol" editable="false" prefWidth="92.0" resizable="false" text="Affiliate ID" />
                                                    <TreeTableColumn fx:id="treeRawClicksCol" editable="false" resizable="false" text="Raw" />
                                                    <TreeTableColumn fx:id="treeUniqueClicksCol" editable="false" resizable="false" text="Uniq" />
                                                    <TreeTableColumn fx:id="treeSignupCounterCol" editable="false" prefWidth="67.0" resizable="false" text="SignupC" />
                                                    <TreeTableColumn fx:id="treeSignupMoneyCol" editable="false" minWidth="3.0" prefWidth="77.0" resizable="false" text="SignupM" />
                                                    <TreeTableColumn fx:id="treeRebillCounterCol" editable="false" minWidth="0.0" prefWidth="66.0" resizable="false" text="RebillC" />
                                                    <TreeTableColumn fx:id="treeRebillMoneyCol" editable="false" prefWidth="78.0" resizable="false" text="RebillM" />
                                                    <TreeTableColumn fx:id="treeRefundChargebackCounterCol" editable="false" prefWidth="105.0" resizable="false" text="R/Ch Counter" />
                                                    <TreeTableColumn fx:id="treeRefundChargebackMoneyCol" editable="false" prefWidth="104.0" resizable="false" text="R/Ch Money" />
                                                    <TreeTableColumn fx:id="treeTotalMoneyCol" editable="false" minWidth="0.0" prefWidth="110.0" resizable="false" text="Total Money" />
                                                </columns>
                                                <contextMenu>
                                                    <ContextMenu>
                                                        <items>
                                                            <MenuItem mnemonicParsing="false" onAction="#handleAddNewAffiliateProgram" text="Add new AP" />
                                                            <MenuItem mnemonicParsing="false" text="Unspecified Action" />
                                                            <MenuItem mnemonicParsing="false" text="Unspecified Action" />
                                                            <MenuItem mnemonicParsing="false" onAction="#handleDeleteAffiliateProgram" text="Delete AP" />
                                                            <SeparatorMenuItem mnemonicParsing="false" />
                                                            <MenuItem mnemonicParsing="false" onAction="#handleEditAP" text="Properties" />
                                                        </items>
                                                    </ContextMenu>
                                                </contextMenu>
                                            </TreeTableView>
                                            <ProgressIndicator fx:id="refreshingIndicator" layoutX="478.0" layoutY="124.0" prefHeight="250.0" prefWidth="374.0" progress="-1.0" AnchorPane.leftAnchor="478.0" AnchorPane.topAnchor="124.0" />
                                        </children>
                                    </AnchorPane>
                                </content>
                            </Tab>
                            <Tab closable="false" text="Empty Tab">
                                <content>
                                    <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" visible="false" />
                                </content>
                            </Tab>
                        </tabs>
                    </TabPane>
                    <HBox prefHeight="35.0">
                        <children>
                            <Label fx:id="apNameLab" prefHeight="30.0" prefWidth="229.0" text="Label" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="lastDateLab" prefHeight="30.0" prefWidth="85.0" text="LastDate" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="loginLab" prefHeight="30.0" prefWidth="64.0" text="Login" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="affilIdLab" prefHeight="30.0" prefWidth="86.0" text="AffID" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="rawLab" prefHeight="30.0" prefWidth="74.0" text="rawLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="uniqLab" prefHeight="30.0" prefWidth="74.0" text="uniqLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="signCLab" prefHeight="30.0" prefWidth="61.0" text="SignCLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="signMLab" prefHeight="30.0" prefWidth="71.0" text="SignMLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="rebillCLab" prefHeight="30.0" prefWidth="61.0" text="RebillCLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="rebillMLab" prefHeight="30.0" prefWidth="72.0" text="RebillMLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="rChCountLab" prefHeight="30.0" prefWidth="99.0" text="RChCounLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="rChMonLab" prefHeight="30.0" prefWidth="98.0" text="RChMonLab" />
                            <Separator orientation="VERTICAL" prefHeight="200.0" />
                            <Label fx:id="totalLab" prefHeight="30.0" prefWidth="110.0" text="TotalLab" />
                        </children>
                        <padding>
                            <Insets left="10.0" />
                        </padding>
                    </HBox>
                </children>
            </VBox>`

Binding labels to columns

//TreeView_Begin
@FXML
private TreeTableView<APDataFromDB> treeTableMainStat;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeProgramNameCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeLastDateCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeLoginCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeAffiliateIDCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeRawClicksCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeUniqueClicksCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeSignupCounterCol;
@FXML
private TreeTableColumn<APDataFromDB, Double> treeSignupMoneyCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeRebillCounterCol;
@FXML
private TreeTableColumn<APDataFromDB, Double> treeRebillMoneyCol;
@FXML
private TreeTableColumn<APDataFromDB, Integer> treeRefundChargebackCounterCol;
@FXML
private TreeTableColumn<APDataFromDB, Double> treeRefundChargebackMoneyCol;
@FXML
private TreeTableColumn<APDataFromDB, Double> treeTotalMoneyCol;
//TreeView_End


@FXML
Label apNameLab = new Label();
@FXML
Label lastDateLab = new Label();
@FXML
Label loginLab = new Label();
@FXML
Label affilIdLab = new Label();
@FXML
Label rawLab = new Label();
@FXML
Label uniqLab = new Label();
@FXML
Label signCLab = new Label();
@FXML
Label signMLab = new Label();
@FXML
Label rebillCLab = new Label();
@FXML
Label rebillMLab = new Label();
@FXML
Label rChCountLab = new Label();
@FXML
Label rChMonLab = new Label();
@FXML
Label totalLab = new Label();

        @FXML
    private void initialize() throws SQLException {

        final String pattern = "yyyy-MM-dd";

        datePickerStart.setValue(LocalDate.now());
        datePickerEnd.setValue(LocalDate.now());
        allDownloadsProgressBar.setProgress(0);
        refreshingIndicator.setVisible(false);

        StringConverter stringConverter = new StringConverter<LocalDate>() {
            DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern);

            @Override
            public String toString(LocalDate date) {
                if (date != null) {
                    return dateFormatter.format(date);
                } else {
                    return "";
                }
            }

            @Override
            public LocalDate fromString(String string) {
                if (string != null && !string.isEmpty()) {
                    return LocalDate.parse(string, dateFormatter);
                } else {
                    return null;
                }
            }
        };
        datePickerStart.setConverter(stringConverter);
        datePickerStart.setPromptText(pattern.toLowerCase());
        datePickerEnd.setConverter(stringConverter);
        datePickerEnd.setPromptText(pattern.toLowerCase());

        // устанавливаем тип и значение которое должно хранится в колонке
        //TreeView_begin
        treeProgramNameCol.setCellValueFactory(new TreeItemPropertyValueFactory<>("apName"));
        treeLastDateCol.setCellValueFactory(new TreeItemPropertyValueFactory<>("

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

In JavaFX it's like in Swing: The quickest way to do it is to create a 2nd table.

You can take a look at a summary table sample code on this gist.

Screenshot:

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...