繁体   English   中英

用Java动态创建GUI组件

[英]Creating GUI components dynamically in java

因此,我们可以动态创建一个按钮:

panel.add(new JButton("Button"));
validate();

但是问题是,我们以后如何调用这些元素? 例如,如何将事件侦听器添加到上面创建的此按钮上,例如稍后添加100行代码?

我总是在创建按钮之前先创建按钮,如下所示

   private JPanel buttonPanel() { //button panel method containting 
        JPanel panel = new JPanel();
        JButton addButton = new JButton("Add");
        addButton.setToolTipText("Add Customer Data");
        JButton editButton = new JButton("Edit");
        editButton.setToolTipText("Edit selected Customer");
        JButton deleteButton = new JButton ("Delete");
        deleteButton.setToolTipText("Delete selected Customer");

        addButton.addActionListener((ActionEvent) -> {
            doAddButton();
        });
        editButton.addActionListener((ActionEvent) -> {
            doEditButton();
        });
        deleteButton.addActionListener((ActionEvent) -> {
            doDeleteButton();
        });

        panel.add(addButton);
        panel.add(editButton);
        panel.add(deleteButton);

        return panel;
    }

稍后允许您执行类似的操作。

    private void doAddButton() { //provides action for add button
    CustomerForm customerForm = new CustomerForm(this, "Add Customer", true);
    customerForm.setLocationRelativeTo(this);
    customerForm.setVisible(true);
}

为您的JButton创建一个变量:

JButton jButton = new JButton("Button");
panel.add(jButton);
validate();
/*
 *
 *
100 lines of code 
 *
 */

// add an event listener
jButton.addActionListener((ActionEvent) -> {
            // do something
        });

为了将事件侦听器或其他功能绑定到按钮,您需要将对它的引用存储在变量中。 所以,代替

panel.add(new JButton("Button"));

您可以使用初始化按钮

JButton myButton = new JButton("Button");
panel.add(myButton);

然后在您的代码中

myButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
         // do something
     } 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM