javafx将按钮添加到网格窗格

用户名

我正在向网格窗格动态添加按钮,但是在赋予它们功能后它们都显示相同的功能,我不知道为什么?

import java.awt.Panel;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;

public class TestController implements Initializable {
    @FXML
    Panel mpanel;
    @FXML 
     GridPane gpnael;
int x=0,y=0,i=0,y1=0;
    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

    @FXML
    private void add(ActionEvent event) {
        y1++;
        Button  temp = new Button("Button " + i);
                temp.setOnAction(new EventHandler<ActionEvent>() {
                    @Override
                    public void handle(ActionEvent e) {
                        System.out.println("button"+y1);
                    }
                });

                gpnael.add(temp,i++,1);

    }

}

现在,当我单击每个按钮时,它们在网格窗格中添加了三个按钮,它们显示相同的输出。

我希望它们都显示不同的输出。

曼苏尔

您不是在按钮中定义它,而是始终使用非最终整数来表示您的值,您应该尝试使它们具有唯一值或为每个按钮设置一个ID并从ID中获取值:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class ButtonsOnGPanel extends Application {

    private int i = 0;
    private GridPane gpnael = new GridPane();
    @Override
    public void start(Stage stage) throws Exception {
        Pane root = new Pane();
        while(i<3){
            addButton();
        }
        root.getChildren().add(gpnael);
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }
    private void addButton() {
        i++;
        final Button temp = new Button("Button " + i);
        final int numButton= i;
        temp.setId("" + i);
        temp.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                System.out.println("id(" + temp.getId()  + ") =  " + numButton);
            }
        });
        gpnael.add(temp, i, 1);
    }
    public static void main(String[] args) {
        launch(args);
    }
}

如果要使用lambda表达式:

    temp.setOnAction((ActionEvent e) -> {
        System.out.println("id(" + temp.getId()  + ") =  " + numButton);
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

javafx将按钮添加到网格窗格

来自分类Dev

将顶部菜单添加到以 JavaFX 为中心的网格窗格

来自分类Dev

获取添加到网格窗格的按钮数组中的位置[x] [y]的值

来自分类Dev

使用笛卡尔坐标将形状添加到JavaFX窗格

来自分类Dev

将按钮网格添加到 JPanel

来自分类Dev

将CComboBox添加到CMFCStatusBar窗格的问题

来自分类Dev

无法将“ MidiParser”窗格添加到Podfile

来自分类Dev

将文本框添加到窗格

来自分类Dev

将浏览器窗格添加到Atom

来自分类Dev

将快捷方式添加到导航窗格

来自分类Dev

将 JButton 添加到滚动窗格

来自分类Dev

将视图或按钮链接添加到Kendo网格

来自分类Dev

我如何获取按钮来填充javafx网格窗格?

来自分类Dev

JavaFX:自定义网格窗格中按钮的宽度

来自分类Dev

将按钮添加到单元格

来自分类Dev

将按钮添加到UITableView单元格

来自分类Dev

将控件添加到Word的文档操作窗格中会导致E_FAIL

来自分类Dev

如何将GraphView添加到android中的滚动窗格中?

来自分类Dev

将Winform加载项添加到Word中的“自定义任务”窗格中

来自分类Dev

如何将列表中的多个子项添加到Java FX的窗格中

来自分类Dev

将节点添加到多个场景//窗格时的场景图行为

来自分类Dev

如何将滚动窗格添加到我的框架

来自分类Dev

将中心面板添加到我的内容窗格时,GUI对象消失

来自分类Dev

将文本字段动态添加到 JPanel 后,如何使滚动窗格出现?

来自分类Dev

将边缘添加到Openmesh网格

来自分类Dev

将圆角添加到网格

来自分类Dev

将行添加到网格视图

来自分类Dev

将网格添加到ItemsControl的ItemsPanelTemplate

来自分类Dev

将圆角添加到网格

Related 相关文章

热门标签

归档