Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用弹出窗口将项目添加到arraylist_Java_Netbeans_Arraylist - Fatal编程技术网

Java 使用弹出窗口将项目添加到arraylist

Java 使用弹出窗口将项目添加到arraylist,java,netbeans,arraylist,Java,Netbeans,Arraylist,我试图使用弹出式面板输入信息,以便添加到我的arraylist中。我找到了这个密码 import javax.swing.*; public class JOptionPaneMultiInput { public static void main(String[] args) { JTextField xField = new JTextField(15); JTextField yField = new JTextField(15);

我试图使用弹出式面板输入信息,以便添加到我的arraylist中。我找到了这个密码

    import javax.swing.*;

public class JOptionPaneMultiInput {

    public static void main(String[] args) {
        JTextField xField = new JTextField(15);
        JTextField yField = new JTextField(15);
        JTextField zField = new JTextField(15);

        JPanel myPanel = new JPanel();
        myPanel.add(new JLabel("Item Name:"));
        myPanel.add(xField);

        myPanel.add(Box.createVerticalStrut(15)); // a spacer
        myPanel.add(new JLabel("Number in inventory:"));
        myPanel.add(yField);

        myPanel.add(Box.createVerticalStrut(15)); // a spacer
        myPanel.add(new JLabel("Unit Price:"));
        myPanel.add(zField);

        int result = JOptionPane.showConfirmDialog(null, myPanel,
                "Please Enter data into all boxes", JOptionPane.OK_CANCEL_OPTION);
        if (result == JOptionPane.OK_OPTION) {

        }

    }
}
它自己工作并显示我需要显示的内容,但是如何让它与我的actionListner一起工作?我希望它在用户单击add按钮时弹出

我也不知道如何将这些信息输入到以前构建的存储的arraylist中,但如果需要,我可以将其作为一个单独的问题

试试看

JButton but = new JButton("Popup");
but.addActionListener(new ActionListener() {
 @Override
 public void actionPerformed(ActionEvent e) {
 final JPanel myPanel = new PopupPanel();// Create a separate class extends JPanel
     int result = JOptionPane.showConfirmDialog(null, myPanel,
          "Please Enter data into both boxes", JOptionPane.OK_CANCEL_OPTION);
            if (result == JOptionPane.OK_OPTION) {

            }
        }
    });

通过创建一个单独的类并在action listener中调用该方法,我可以让窗口弹出一个action listener。该类如下所示:

public class JOptionPaneMultiInput {


    public static void main(String[] args) {

        buildWindow();

    }

    public static void buildWindow() {
        JTextField xField = new JTextField(15);
        JTextField yField = new JTextField(15);
        JTextField zField = new JTextField(15);

        JPanel myPanel = new JPanel();
        myPanel.add(new JLabel("Item Name:"));
        myPanel.add(xField);

        myPanel.add(Box.createVerticalStrut(15)); // a spacer
        myPanel.add(new JLabel("Number in inventory:"));
        myPanel.add(yField);

        myPanel.add(Box.createVerticalStrut(15)); // a spacer
        myPanel.add(new JLabel("Unit Price:"));
        myPanel.add(zField);
        int result = JOptionPane.showConfirmDialog(null, myPanel,
                "Please Enter data into all boxes", JOptionPane.OK_CANCEL_OPTION);
        if (result == JOptionPane.OK_OPTION) {

            String newItemName = String.valueOf(xField);
            String newInventoryNumber = String.valueOf(yField);
            int newNumber = Integer.parseInt(newInventoryNumber);
            String newUnitPrice = String.valueOf(zField);
            double newPrice = Double.parseDouble(newUnitPrice);


        }

    }
}
 addButton.addActionListener(
            new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e
                ) {
                    JOptionPaneMultiInput.buildWindow();


                }

            }
    );
我的action listener看起来就像这样:

public class JOptionPaneMultiInput {


    public static void main(String[] args) {

        buildWindow();

    }

    public static void buildWindow() {
        JTextField xField = new JTextField(15);
        JTextField yField = new JTextField(15);
        JTextField zField = new JTextField(15);

        JPanel myPanel = new JPanel();
        myPanel.add(new JLabel("Item Name:"));
        myPanel.add(xField);

        myPanel.add(Box.createVerticalStrut(15)); // a spacer
        myPanel.add(new JLabel("Number in inventory:"));
        myPanel.add(yField);

        myPanel.add(Box.createVerticalStrut(15)); // a spacer
        myPanel.add(new JLabel("Unit Price:"));
        myPanel.add(zField);
        int result = JOptionPane.showConfirmDialog(null, myPanel,
                "Please Enter data into all boxes", JOptionPane.OK_CANCEL_OPTION);
        if (result == JOptionPane.OK_OPTION) {

            String newItemName = String.valueOf(xField);
            String newInventoryNumber = String.valueOf(yField);
            int newNumber = Integer.parseInt(newInventoryNumber);
            String newUnitPrice = String.valueOf(zField);
            double newPrice = Double.parseDouble(newUnitPrice);


        }

    }
}
 addButton.addActionListener(
            new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e
                ) {
                    JOptionPaneMultiInput.buildWindow();


                }

            }
    );

将其插入我的actionlistener会弹出确认对话框,但不会填充我的JOptionPaneMultiInput面板。我将您的PopupPanel更改为JOptionPaneMultiInput,但它仍然只填充了确认。@kerinr,从JOpationPane.showConfirmDialog填充值的方法不正确。改用JDialog。