Java动态地向listview添加项

Java动态地向listview添加项,java,listview,dynamic,add,Java,Listview,Dynamic,Add,嘿,伙计们,我有个小问题。我是Java的新手,我只想弄清楚“如何在我的代码中在下面列表视图的末尾添加另一项”。这应该在程序运行时动态发生。我只想单击listview底部的适当空间,然后添加一个项目。有人能帮我解决这个问题吗。谢谢 注意:运行应用程序,所有内容都会显示在那里。我只想为这些按钮添加功能。当我点击“添加”按钮,我应该能够添加更多的项目 package layoutsizingaligning; import java.util.Scanner; import javafx.appli

嘿,伙计们,我有个小问题。我是Java的新手,我只想弄清楚“如何在我的代码中在下面列表视图的末尾添加另一项”。这应该在程序运行时动态发生。我只想单击listview底部的适当空间,然后添加一个项目。有人能帮我解决这个问题吗。谢谢

注意:运行应用程序,所有内容都会显示在那里。我只想为这些按钮添加功能。当我点击“添加”按钮,我应该能够添加更多的项目

package layoutsizingaligning;

import java.util.Scanner;
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.scene.control.Control;
import javafx.scene.Scene;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.PasswordField;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.layout.*;
import javafx.stage.Stage;

/**
 * Sample application that shows how the sized of controls can be managed.
 * Sample is for demonstration purposes only, most controls are inactive.
 */
public class LayoutSizingAligning extends Application {

    // Define buttons here for access by multiple methods
    private Button btnApply = new Button("Apply");
    private Button btnContinue = new Button("Continue");
    private Button btnExit = new Button("Exit");

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Application.launch(LayoutSizingAligning.class, args);

    }

    //@Override
    public void start(Stage primaryStage) {

        // Make Exit button bigger by using larger font for label
        //btnExit.setStyle("-fx-font-size: 12pt;");

        // Use tab pane with one tab for sizing UI and one tab for alignment UI
        TabPane tabs = new TabPane();
        Tab tabSize = new Tab();
        tabSize.setText("Sizing");
        tabSize.setContent(sizingSample());

        Tab tabAlign = new Tab();
        tabAlign.setText("Alignment");
        tabAlign.setContent(alignmentSample());

        tabs.getTabs().addAll(tabSize, tabAlign);

        Scene scene = new Scene(tabs, 300, 400); // Manage scene size
        primaryStage.setTitle("Sizing and Aligning");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

/*
 * Creates the UI for the sizing sample, which demonstrates ways to manage
 * the size of controls when you don't want the default sizes.
 */
    private Pane sizingSample() {

        BorderPane border = new BorderPane();
        border.setPadding(new Insets(20, 0, 20, 20));

        ListView<String> lvList = new ListView<String>(); 
        ObservableList<String> items = FXCollections.observableArrayList (
                 "Hot dog", "Hamburger", "French fries", 
                 "Carrot sticks", "Chicken salad");
//        Scanner scan = new Scanner(System.in);
//        String s = scan.next();
//        items.add(s);
        lvList.setItems(items);
        lvList.setMaxHeight(Control.USE_PREF_SIZE);
        lvList.setPrefWidth(150.0);

        border.setLeft(lvList);    
        border.setRight(createButtonColumn());  
        border.setBottom(createButtonRow());  // Uses a tile pane for sizing
//        border.setBottom(createButtonBox());  // Uses an HBox, no sizing 

        return border;
    }

/*
 * Creates the UI for the alignment sample, which demonstrates ways to manage
 * the alignment of controls when you don't want the default alignment.
 */
    private Pane alignmentSample() {

        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);  // Override default
        grid.setHgap(10);
        grid.setVgap(12);

        // Use column constraints to set properties for columns in the grid
        ColumnConstraints column1 = new ColumnConstraints();
        column1.setHalignment(HPos.RIGHT);  // Override default
        grid.getColumnConstraints().add(column1); 

        ColumnConstraints column2 = new ColumnConstraints();
        column2.setHalignment(HPos.LEFT);  // Override default
        grid.getColumnConstraints().add(column2); 

        HBox hbButtons = new HBox();
        hbButtons.setSpacing(10.0);
        hbButtons.setAlignment(Pos.CENTER);  // Aligns HBox and controls in HBox


        Button btnSubmit = new Button("Submit");
        Button btnClear = new Button("Clear");
        Button btnExit2 = new Button("Exit");
        //btnSubmit.setStyle("-fx-font-size: 15pt;");

        Label lblName = new Label("User name:");
        TextField tfName = new TextField();
        Label lblPwd = new Label("Password:");
        PasswordField pfPwd = new PasswordField();

        hbButtons.getChildren().addAll(btnSubmit, btnClear, btnExit2);
        grid.add(lblName, 0, 0);
        grid.add(tfName, 1, 0);
        grid.add(lblPwd, 0, 1);
        grid.add(pfPwd, 1, 1);
        grid.add(hbButtons, 0, 2, 2, 1);

        /* Uncomment the following statements to bottom-align the buttons */        
//        hbButtons.setAlignment(Pos.BOTTOM_CENTER);
//        GridPane innergrid = new GridPane();
//        innergrid.setAlignment(Pos.CENTER);
//        innergrid.add(hbButtons, 0, 0);
//        grid.add(innergrid, 0, 2, 2, 1);

        return grid;
    }

/*
 * Creates a column of buttons and makes them all the same width as the
 * largest button.
 */
    private VBox createButtonColumn() { 

        Button btnAdd = new Button("Add");
        Button btnDelete = new Button("Delete");
        Button btnMoveUp = new Button("Move Up");
        Button btnMoveDown = new Button("Move Down");

        // Comment out the following statements to see the default button sizes
        btnAdd.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnDelete.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnMoveUp.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnMoveDown.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnMoveDown.setMinWidth(Control.USE_PREF_SIZE);

        btnAdd.setOnAction(new EventHandler<ActionEvent>() {

            //@Override
            public void handle(ActionEvent event) {
                Scanner scan = new Scanner(System.in);
                String s = scan.next();

            }
        });

        VBox vbButtons = new VBox();
        vbButtons.setSpacing(10);
        vbButtons.setPadding(new Insets(0, 20, 10, 20)); 

        vbButtons.getChildren().addAll(
                btnAdd, btnDelete, btnMoveUp, btnMoveDown);

        return vbButtons;
    }

/*
 * Creates a row of buttons and makes them all the same size.
 */
    private TilePane createButtonRow() {

        // Let buttons grow, otherwise they will be different sizes based
        // on the length of the label
        btnApply.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnContinue.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnExit.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
        btnExit.setOnAction(new EventHandler<ActionEvent>() {

            //@Override
            public void handle(ActionEvent event) {
                System.exit(0);
            }
        });
        TilePane tileButtons = new TilePane(Orientation.HORIZONTAL);
        tileButtons.setPadding(new Insets(20, 10, 20, 0));
        tileButtons.setHgap(10.0);
        tileButtons.setVgap(8.0); // In case window is reduced and buttons 
                                  // require another row
        tileButtons.getChildren().addAll(btnApply, btnContinue, btnExit);

        return tileButtons;
    }

/*
 * Creates a row of buttons with the default sizes.
 */
    private HBox createButtonBox() { 

        HBox hbButtons = new HBox();
        hbButtons.setSpacing(10);
        hbButtons.setPadding(new Insets(20, 10, 20, 0)); 
        hbButtons.getChildren().addAll(btnApply, btnContinue, btnExit);

        return hbButtons;
    }
}
package layoutsizengaligning;
导入java.util.Scanner;
导入javafx.application.application;
导入javafx.geometry.HPos;
导入javafx.geometry.Insets;
导入javafx.geometry.Orientation;
导入javafx.scene.control.control;
导入javafx.scene.scene;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.geometry.Pos;
导入javafx.scene.control.Button;
导入javafx.scene.control.Label;
导入javafx.scene.control.ListView;
导入javafx.scene.control.PasswordField;
导入javafx.scene.control.Tab;
导入javafx.scene.control.TabPane;
导入javafx.scene.control.TextField;
导入javafx.scene.layout.*;
导入javafx.stage.stage;
/**
*显示如何管理控件大小的示例应用程序。
*示例仅用于演示,大多数控件处于非活动状态。
*/
公共类LayoutSizingAligning扩展了应用程序{
//在此处定义按钮,以便通过多种方法进行访问
私有按钮Btnaply=新按钮(“应用”);
专用按钮BTnConcontinue=新按钮(“继续”);
私有按钮btnExit=新按钮(“退出”);
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
Application.launch(layoutsizengaligning.class,args);
}
//@凌驾
公共无效开始(阶段primaryStage){
//使用更大字体作为标签,使退出按钮更大
//btnExit.setStyle(“-fx字体大小:12pt;”);
//使用选项卡窗格,其中一个选项卡用于调整UI大小,另一个选项卡用于对齐UI
TabPane tabs=新建TabPane();
Tab tabSize=new Tab();
tabSize.setText(“尺寸”);
tabSize.setContent(sizingSample());
Tab tabAlign=new Tab();
tabAlign.setText(“对齐”);
tabAlign.setContent(alignmentSample());
tabs.getTabs().addAll(tabSize,tabAlign);
场景=新场景(选项卡,300,400);//管理场景大小
初级阶段。设置标题(“尺寸和对齐”);
初级阶段。场景(场景);
primaryStage.show();
}
/*
*创建大小调整示例的UI,该UI演示了管理
*不需要默认大小时控件的大小。
*/
专用窗格大小示例(){
BorderPane border=新的BorderPane();
边框。设置填充(新插图(20,0,20,20));
ListView lvList=新建ListView();
ObservableList items=FXCollections.observableArrayList(
“热狗”、“汉堡包”、“炸薯条”,
“胡萝卜条”、“鸡肉沙拉”);
//扫描仪扫描=新扫描仪(System.in);
//字符串s=scan.next();
//项目。添加(s);
lvList.setItems(项目);
lvList.setMaxHeight(控制。使用PREF\u大小);
lvList.setPrefWidth(150.0);
border.setLeft(lvList);
setRight(createButtonColumn());
border.setBottom(createButtonRow());//使用平铺窗格调整大小
//border.setBottom(createButtonBox());//使用HBox,不调整大小
返回边界;
}
/*
*创建对齐示例的UI,该UI演示了管理
*不需要默认对齐方式时控件的对齐方式。
*/
专用窗格对齐示例(){
GridPane grid=新建GridPane();
grid.setAlignment(Pos.CENTER);//覆盖默认值
网格。setHgap(10);
网格设置间隙(12);
//使用列约束为网格中的列设置属性
ColumnConstraints column1=新的ColumnConstraints();
column1.setHalignment(HPos.RIGHT);//覆盖默认值
grid.getColumnConstraints().add(column1);
ColumnConstraints column2=新的ColumnConstraints();
column2.setHalignment(HPos.LEFT);//覆盖默认值
grid.getColumnConstraints().add(column2);
HBox hbButtons=新的HBox();
hbButtons.setSpacing(10.0);
hbButtons.setAlignment(Pos.CENTER);//对齐HBox和HBox中的控件
按钮btnSubmit=新按钮(“提交”);
按钮btnClear=新按钮(“清除”);
按钮btnExit2=新按钮(“退出”);
//btnSubmit.setStyle(“-fx字体大小:15pt;”);
Label lblName=新标签(“用户名:”);
TextField tfName=新建TextField();
标签lblPwd=新标签(“密码:”);
PasswordField pfPwd=新的PasswordField();
hbButtons.getChildren().addAll(btnSubmit、btnClear、btnExit2);
grid.add(lblName,0,0);
add(tfName,1,0);
加(lblPwd,0,1);
网格添加(pfPwd,1,1);
添加(按钮,0,2,2,1);
/*取消对以下语句的注释,使按钮底部对齐*/
//HB按钮。设置对齐(位置底部\中心);
//GridPane innergrid=新建GridPane();
//内网格设置对齐(位置中心);
//添加(hbButtons,0,0);
//添加(innergrid,0,2,2,1);
返回网格;
}
/*
*创建一列按钮,并使其宽度与
*最大的按钮。
*/
私有VBox createButtonColumn(){
按钮btnAdd=新按钮(“添加”);
按钮btnDelete=新按钮(“删除”);
按钮BTNMOVERUP=新按钮(“上移”);
按钮btnMoveDown=新按钮(“下移”);
//注释掉下面的sta
listview.getItems().add("some new element");