Как одинаково установить ширину столбца в таблице JavaFX с помощью Scene Builder? - PullRequest
0 голосов
/ 27 сентября 2018

Я строю таблицу в Java Fx, используя Scene Builder.Родителем таблицы является Grid Pane.Обычно я использую вычисленный размер для строки, минимальной ширины столбца, ширины префекта и максимальной ширины, чтобы одинаково настроить пространство между компонентами внутри сетки.И я использую Hgrow в соответствии с моим требуемым использованием.Но вычисленный размер не может быть установлен, чтобы отрегулировать расстояние между столбцами в таблице, поскольку столбец исчезнет при установке.Для настройки столбцов можно применять только фиксированный размер.Но пространство не регулируется равномерно автоматически при применении фиксированного размера.Как установить вычисленный размер, чтобы равномерно распределить пространство в столбцах внутри таблицы?

 <GridPane style="-fx-background-color: #fff;" GridPane.columnSpan="3" GridPane.rowIndex="1">
      <columnConstraints>
          <ColumnConstraints halignment="CENTER" hgrow="ALWAYS" />
          </columnConstraints>
               <rowConstraints>
                 <RowConstraints vgrow="ALWAYS" />
                 </rowConstraints>
                    <GridPane.margin>
                       <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
                     </GridPane.margin>
                           <children>
                              <TableView fx:id="TB_CourseTable" prefHeight="200.0" prefWidth="200.0">
                                <columns>
                                    <TableColumn fx:id="TC_SchoolID" prefWidth="75.0" text="SCHOOL ID" />
                                  <TableColumn fx:id="TC_ID" maxWidth="1.7976931348623157E308" minWidth="-Infinity" prefWidth="51.0" text="ID" />
                                    <TableColumn fx:id="TC_Session" minWidth="0.0" prefWidth="103.0" text="SESSION" />
                                  <TableColumn fx:id="TC_CourseCategory" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="149.0" text="COURSE CATEGORY" />
                                    <TableColumn fx:id="TC_CourseName" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="200.0" text="COURSE NAME" />
                                    <TableColumn fx:id="TC_Year" prefWidth="75.0" text="YEAR" />
                                    <TableColumn fx:id="TC_StartDate" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="152.0" text="START DATE" />
                                    <TableColumn fx:id="TC_EndDate" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="152.0" text="END DATE" />
                                    <TableColumn fx:id="TC_IsActive" maxWidth="1.7976931348623157E308" minWidth="-1.0" prefWidth="117.0" text="IS ACTIVE" />
                                </columns>
                              </TableView>
                           </children>
                        </GridPane>

1 Ответ

0 голосов
/ 28 сентября 2018

В этом случае все столбцы расположены на равном расстоянии друг от друга, когда вы начнете устанавливать min, max и pref width, он будет ограничивать этот столбец, поэтому, когда вы продолжали добавлять вещи, в следующий раз добавлялось все больше и больше ограничений, просто попробуйте удалить все размеры из fxml при попыткечтобы сделать что-то одинаково, Java обычно будет пытаться установить их по умолчанию одинаково, если только у объекта нет ограничений

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane style="-fx-background-color: #fff;" GridPane.columnSpan="3" GridPane.rowIndex="1" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
    <columnConstraints>
        <ColumnConstraints halignment="CENTER" hgrow="ALWAYS" />
    </columnConstraints>
    <rowConstraints>
        <RowConstraints vgrow="ALWAYS" />
    </rowConstraints>
    <GridPane.margin>
        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
    </GridPane.margin>
    <children>
        <TableView fx:id="TB_CourseTable">
            <columns>
                <TableColumn fx:id="TC_SchoolID" text="SCHOOL ID" />
                <TableColumn fx:id="TC_ID" text="ID" />
                <TableColumn fx:id="TC_Session" text="SESSION" />
                <TableColumn fx:id="TC_CourseCategory" text="COURSE CATEGORY" />
                <TableColumn fx:id="TC_CourseName" text="COURSE NAME" />
                <TableColumn fx:id="TC_Year" text="YEAR" />
                <TableColumn fx:id="TC_StartDate" text="START DATE" />
                <TableColumn fx:id="TC_EndDate" text="END DATE" />
                <TableColumn fx:id="TC_IsActive" text="IS ACTIVE" />
            </columns>
        </TableView>
    </children>
</GridPane>
...