Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 JTextField NullPointerException_Java_Nullpointerexception_Awt_Jtextfield_Jtextarea - Fatal编程技术网

Java ArrayList JTextField NullPointerException

Java ArrayList JTextField NullPointerException,java,nullpointerexception,awt,jtextfield,jtextarea,Java,Nullpointerexception,Awt,Jtextfield,Jtextarea,您好,在创建动态textArea方法时,我被返回 Exception in thread "main" java.lang.NullPointerException at WindowCreation.setContentsParams(WindowCreation.java:121) at Main.main(Main.java:38) 我需要能够返回一个用户输入并将其发送到数据库中,但目前我只是尝试获取单个textField/textArea ID,以便能够从中返回文本 WindowCre

您好,在创建动态textArea方法时,我被返回

Exception in thread "main" java.lang.NullPointerException
at WindowCreation.setContentsParams(WindowCreation.java:121)
at Main.main(Main.java:38)
我需要能够返回一个用户输入并将其发送到数据库中,但目前我只是尝试获取单个textField/textArea ID,以便能够从中返回文本

WindowCreation类如下所示

import javax.swing.*;
import javax.swing.event.DocumentListener;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class WindowCreation {

private int mainHeight = 0;
private int mainWidth = 0;
private JButton button;
private ArrayList<JTextField> textField;
private ArrayList<JTextArea> textArea;
private JLabel label;
private JFrame frame;
private Toolkit tk = Toolkit.getDefaultToolkit();
private Dimension screenSize = tk.getScreenSize();
private JPanel jlabelEmpty = new JPanel();
private DefaultComboBoxModel<String> model;
private JComboBox<String> comboBox;

     public void setWindowParam(int width, int height, String name, int x,
        int y, boolean center) {
    frame = new JFrame(name);
    int screenHeight = screenSize.height;
    int screenWidth = screenSize.width;

    final int CENTER_X = ((screenWidth / 2) - (width / 2));
    final int CENTER_Y = ((screenHeight / 2) - (height / 2));

    frame.setResizable(false);
    if (center) {
        frame.setLocation(CENTER_X, CENTER_Y);
    } else {

        frame.setLocation(x, y);

    }
    frame.setSize(width, height);

    frame.addWindowListener(new WindowAdapter() {

        public void windowClosing(WindowEvent e) {
            System.exit(0);

        }
    });

    jlabelEmpty.setPreferredSize(new Dimension(width, height));
    jlabelEmpty.setOpaque(true);
    jlabelEmpty.setLayout(null);
    mainWidth = width;
    mainHeight = height;
}

public void setContentsParams(int width, int height, String x, String y,
        String content, String type,String[] choice) {
    boolean xIsNum;
    int wdthOffset;
    boolean yIsNum;
    int hightOffset;

    try {
        Integer.parseInt(x);
        xIsNum = true;
    } catch (Exception e) {
        xIsNum = false;
    }
    if (x.equals("center")) {
        wdthOffset = ((getWidth() / 2) - (width / 2));

    } else if (xIsNum) {

        wdthOffset = Integer.parseInt(x);

    }else{

        wdthOffset = 0;

    }

    try {
        Integer.parseInt(y);
        yIsNum = true;
    } catch (Exception e) {
        yIsNum = false;
    }
    if (y.equals("center")) {
        hightOffset = ((getHeight() / 2) - (height / 2));

    } else if (yIsNum) {

        hightOffset = Integer.parseInt(y);

    }else{

        hightOffset = 0;

    }
    switch (type) {
    case "button":
        button = new JButton(content);
        button.setSize(new Dimension(width, height));
        button.setLocation(wdthOffset, hightOffset);
        jlabelEmpty.add(button);
        button.setFont(new Font("name1", Font.BOLD, 20));
        ActionListener buttonListener = new ButtonListener();
        button.addActionListener(buttonListener);
        break;
    case "textfield":
        textField.add(new JTextField(content));
        textField.get(textField.size()-1).setSize(new Dimension    (width,height));
        textField.get(textField.size()-1).setLocation(wdthOffset, hightOffset);
        jlabelEmpty.add(textField.get(textField.size()-1));
        break;
    case "textarea":
        textArea.add(new JTextArea(content));
        textArea.get(textArea.size()-1).setSize(new Dimension(width,height));
        textArea.get(textArea.size()-1).setLocation(wdthOffset, hightOffset); 

        jlabelEmpty.add(textArea.get(textArea.size()-1));
        break;
    case "textdisplay":
        label = new JLabel(content);
        label.setSize(new Dimension(width,height));
        label.setLocation(wdthOffset, hightOffset);
        jlabelEmpty.add(label);
        break;
    case "dropmenu":
         model = new DefaultComboBoxModel<String>();
         int i = 0; 
         while (i < choice.length){

             model.addElement(choice[i]);
             i++;
         }
         comboBox = new JComboBox<String>(model);
         comboBox.setSize(new Dimension(width,height));
         comboBox.setLocation(wdthOffset,hightOffset);
         jlabelEmpty.add(comboBox);

    }
    frame.revalidate();
    frame.repaint();

}

public void displayInput(int compNum){

    System.out.println(textArea.get(compNum));

}

public void removePanel(int panel){

    jlabelEmpty.remove(panel);

}

public int getWidth() {

    return (mainWidth);

}

public int getHeight() {

    return (mainHeight);

}

public void DisplayWindow() {
    frame.getContentPane().add(jlabelEmpty, BorderLayout.CENTER);
    frame.pack();
    frame.setVisible(true);
}

}
如果我不使用and Array来识别文本字段,它可以正常工作,但是我无法获得单个字段的输入

private ArrayList textArea;
private ArrayList<JTextArea> textArea;
您的文本区域为空。代码应为:

private ArrayList<JTextArea> textArea = new ArrayList<JTextArea>();
private ArrayList textArea=new ArrayList();

这将创建一个
empty
ArrayList,您现在可以对其进行操作

因为我们这里没有行号,请标记发生异常的行(Main.java,第38行和WindowCreation.java,第121行)是的,解决了它,我不敢相信这是基本的,我已经搜索了很多年了,完全跳过了删除,因为我刚刚按了它是正确的。干杯
private ArrayList<JTextArea> textArea = new ArrayList<JTextArea>();