J2F*_*2FX 1 java user-interface listview javafx intellij-idea
我的问题是我的 ListView 没有在 GUI 上显示任何内容,我添加了一个占位符进行测试,它确实显示了占位符文本,但除此之外我无法添加到列表中。
我的目标是拥有我所有客户帐户的列表,我已经包含了 Account 类,我想在 ListView 中显示我所有的帐户 ID。
由于某种原因它不起作用,我尝试只输入随机数据只是为了看看这是否是问题,但仍然不是运气。
我的 Main.class 文件中有一个名为 allAccounts 的静态集。
任何帮助将不胜感激,我已经搜索了近处和远处,因为我是新来的,以了解为什么这不起作用。
控制器类
public class Controller implements Initializable{
    @FXML
    private TableView<?> tableView;
    @FXML
    private TableColumn<?, ?> tableAccount;
    @FXML
    private TableColumn<?, ?> tableDate;
    @FXML
    private TableColumn<?, ?> tableTime;
    @FXML
    private TableColumn<?, ?> tableTotal;
    @FXML
    private TableColumn<?, ?> tableNotes;
    @FXML
    private ListView<String> list;
    @FXML
    private TextArea invoiceView;
    @FXML
    private TextField amountField;
    @FXML
    private Button addAmount;
    @FXML
    private Button newInvoice;
    @FXML
    private Button saveInvoice;
    @FXML
    private Button deleteInvoice;
    @FXML
    private Label messageBar;
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        //list.setPlaceholder(new Label("No Content In List"));
        ObservableList<String> names = FXCollections.observableArrayList(
                "Julia", "Ian", "Sue", "Matthew", "Hannah", "Stephan", "Denise");
        list = new ListView<>();
        list.setItems(names);
        //tableView = new TableView<>(names);
    }
    @FXML
    public void newInvoiceFired() {
        System.out.println("new invoice button has been clicked");
    }
    @FXML
    public void deleteInvoiceFired() {
        System.out.println("delete invoice button has been clicked");
    }
    @FXML
    public void saveInvoiceFired() {
        System.out.println("save invoice button has been clicked");
    }
    public void setAccountsList(){
        for (Account account : Main.getAllAccounts()){
        }
    }
}
图形界面文件
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="477.0" prefWidth="641.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Controller">
   <children>
      <SplitPane dividerPositions="0.24249999999999972" layoutY="50.0" prefHeight="427.0" prefWidth="641.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="50.0">
        <items>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
               <children>
                  <ListView fx:id="list" layoutX="-24.0" layoutY="62.0" prefHeight="425.0" prefWidth="151.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
               </children>
            </AnchorPane>
          <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="445.0" prefWidth="411.0">
               <children>
                  <SplitPane dividerPositions="0.30023640661938533" layoutX="143.0" layoutY="123.0" orientation="VERTICAL" prefHeight="445.0" prefWidth="480.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                    <items>
                      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
                           <children>
                              <TableView layoutX="128.0" layoutY="45.0" prefHeight="208.0" prefWidth="478.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                                <columns>
                                    <TableColumn fx:id="tableAccount" prefWidth="75.0" text="Account" />
                                  <TableColumn fx:id="tableDate" prefWidth="75.0" text="Date" />
                                  <TableColumn fx:id="tableTime" prefWidth="75.0" text="Time" />
                                    <TableColumn fx:id="tableTotal" prefWidth="75.0" text="Amount" />
                                    <TableColumn fx:id="tableNotes" prefWidth="75.0" text="Notes" />
                                </columns>
                              </TableView>
                           </children>
                        </AnchorPane>
                      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="286.0" prefWidth="478.0">
                           <children>
                              <SplitPane dividerPositions="0.4474789915966387" layoutX="168.0" layoutY="48.0" prefHeight="292.0" prefWidth="478.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                                <items>
                                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
                                       <children>
                                          <TextArea fx:id="invoiceView" layoutX="5.0" layoutY="14.0" prefHeight="290.0" prefWidth="209.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
                                       </children>
                                    </AnchorPane>
                                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
                                       <children>
                                          <TextField fx:id="amountField" layoutX="82.0" layoutY="86.0" prefHeight="27.0" prefWidth="104.0" promptText="0.00" />
                                          <Button fx:id="addAmount" layoutX="195.0" layoutY="86.0" mnemonicParsing="false" text="Add" />
                                          <Label layoutX="14.0" layoutY="91.0" text="Amount: : " />
                                       </children>
                                    </AnchorPane>
                                </items>
                              </SplitPane>
                           </children>
                        </AnchorPane>
                    </items>
                  </SplitPane>
               </children>
            </AnchorPane>
        </items>
      </SplitPane>
      <ImageView fitHeight="150.0" fitWidth="200.0" layoutX="14.0" layoutY="11.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="@Icon/Logo.png" />
         </image>
      </ImageView>
      <HBox alignment="CENTER_RIGHT" layoutX="462.0" layoutY="14.0" spacing="15.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
         <children>
            <Button fx:id="newInvoice" mnemonicParsing="false" onAction="#newInvoiceFired" text="New" />
            <Button fx:id="saveInvoice" mnemonicParsing="false" onAction="#deleteInvoiceFired" text="Save" />
            <Button fx:id="deleteInvoice" mnemonicParsing="false" onAction="#deleteInvoiceFired" text="Delete" />
         </children>
      </HBox>
   </children>
</AnchorPane>
账户类
public class Account {
    private String id;
    private String name;
    private String address1;
    private String address2;
    private String postCode;
    private Set<Invoice> invoiceArchive = new HashSet<>();
    public Account(String id, String name, String address1, String address2, String postCode) {
        this.id = id;
        this.name = name;
        this.address1 = address1;
        this.address2 = address2;
        this.postCode = postCode;
        Main.addAccount(this);
    }
    public Account(String id, String name, String address1, String postCode) {
        this.id = id;
        this.name = name;
        this.address1 = address1;
        this.postCode = postCode;
    }
    public Account(String name, String id) {
        this.name = name;
        this.id = id;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress1() {
        return address1;
    }
    public void setAddress1(String address1) {
        this.address1 = address1;
    }
    public String getAddress2() {
        return address2;
    }
    public void setAddress2(String address2) {
        this.address2 = address2;
    }
    public String getPostCode() {
        return postCode;
    }
    public void setPostCode(String postCode) {
        this.postCode = postCode;
    }
    public Set<Invoice> getInvoiceArchive() {
        return invoiceArchive;
    }
    public Invoice newInvoice(){
        Invoice i = new Invoice(this);
        invoiceArchive.add(i);
        return i;
    }
    @Override
    public String toString(){
        return this.getId();
    }
}
您创建了一个listin的新实例Controller,尽管您的列表视图是在 fxml 文件中初始化的。然后您将项目添加到新实例,但该项目未添加到场景图形中,因此您的原始 listView 保持为空
| 归档时间: | 
 | 
| 查看次数: | 4285 次 | 
| 最近记录: |