【问题标题】:Using a popup window to add items to arraylist使用弹出窗口将项目添加到 arraylist
【发布时间】:2013-12-07 04:45:17
【问题描述】:

我正在尝试使用弹出式面板输入信息以添加到我的数组列表中。我找到了这段代码

    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 一起工作?我希望它在用户单击添加按钮时弹出。

我也不确定如何将此信息输入到我之前构建的存储数组列表中,但如果需要,我可以将其作为一个单独的问题。

【问题讨论】:

    标签: java netbeans arraylist


    【解决方案1】:

    试试,

    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) {
    
                }
            }
        });
    

    【讨论】:

    • 将其插入我的 actionlistener 会弹出确认对话框,但不会填充我的 JOptionPaneMultiInput 面板。我将您的 PopupPanel 更改为 JOptionPaneMultiInput,但它仍然只填充了确认信息。
    • @kerinr,从 JopationPane.showConfirmDialog 填充值不是正确的方法。请改用 JDialog。
    【解决方案2】:

    通过创建一个单独的类并在动作监听器中调用该方法,我能够让窗口弹出一个动作监听器。这个类看起来像这样:

    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();
    
    
                    }
    
                }
        );
    

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 2017-01-01
      • 2015-04-12
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      相关资源
      最近更新 更多