Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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 访问JTextAreas数组时出现NullPointerException_Java_Arrays_Swing_Jtextarea - Fatal编程技术网

Java 访问JTextAreas数组时出现NullPointerException

Java 访问JTextAreas数组时出现NullPointerException,java,arrays,swing,jtextarea,Java,Arrays,Swing,Jtextarea,我正在制作一个作业计划表,其中一个人在一个区域中输入当天的作业。我将JTextAreas设置为静态,这样我就可以在课外访问它们。为了清理代码,我决定使用for循环,并将JTextAreas放入静态实例变量数组中。但是,当我试图通过数组访问JTextArea时,会得到一个NullPointerException。以下是JTextArea声明的示例: static JTextArea MondayEng; 数组(每个主题一个)声明如下: static JTextArea[] Eng = new

我正在制作一个作业计划表,其中一个人在一个区域中输入当天的作业。我将JTextAreas设置为静态,这样我就可以在课外访问它们。为了清理代码,我决定使用for循环,并将JTextAreas放入静态实例变量数组中。但是,当我试图通过数组访问JTextArea时,会得到一个NullPointerException。以下是JTextArea声明的示例:

static JTextArea MondayEng;
数组(每个主题一个)声明如下:

static JTextArea[] Eng =  new JTextArea[]{
    MondayEng,
    TuesdayEng,
    WednesdayEng,
    ThursdayEng,
    FridayEng
};
然后是一个
JTextArea[][]
,其中包含数组:

static JTextArea[][] subjs = new JTextArea[][] {Eng, Hist, Math, Sci, Lang};
JTextAreas在JFrame(称为PWin)内实例化,如下所示:

MondayEng = new JTextArea();
MondayEng.setBounds(664, 68, 153, 100);
contentPane.add(MondayEng);
for (int i = 0; i < PWin.subjs.length; i++) { // Iterate through subjects
        String sub = subjects[i]; // Store the current subject in a variable
        for (int y = 0; y < days.length; y++) { // Iterate through days in week             
            String day = days[y]; // Store the current day in a variable                
            String str = PWin.subjs[i][y].getText(); // Get the text of the JTextArea currently selected, plop it in a string
我将尝试获取JTextAreas的内容,如下所示:

MondayEng = new JTextArea();
MondayEng.setBounds(664, 68, 153, 100);
contentPane.add(MondayEng);
for (int i = 0; i < PWin.subjs.length; i++) { // Iterate through subjects
        String sub = subjects[i]; // Store the current subject in a variable
        for (int y = 0; y < days.length; y++) { // Iterate through days in week             
            String day = days[y]; // Store the current day in a variable                
            String str = PWin.subjs[i][y].getText(); // Get the text of the JTextArea currently selected, plop it in a string
for(inti=0;i
保存文件时出现以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at PSave.<init>(PSave.java:19)
    at PWin$1.actionPerformed(PWin.java:262)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6373)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6138)
    at java.awt.Container.processEvent(Container.java:2085)
    at java.awt.Component.dispatchEventImpl(Component.java:4735)
    at java.awt.Container.dispatchEventImpl(Container.java:2143)
    at java.awt.Component.dispatchEvent(Component.java:4565)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
    at java.awt.Container.dispatchEventImpl(Container.java:2129)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4565)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:638)
    at java.awt.EventQueue$1.run(EventQueue.java:636)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:652)
    at java.awt.EventQueue$2.run(EventQueue.java:650)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 在PSave(PSave.java:19) 在PWin$1.actionPerformed(PWin.java:262) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:387) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:242) 在javax.swing.plaf.basic.BasicButtonListener.mouseRelease(BasicButtonListener.java:236) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6373) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3267) 位于java.awt.Component.processEvent(Component.java:6138) 位于java.awt.Container.processEvent(Container.java:2085) 位于java.awt.Component.dispatchEventImpl(Component.java:4735) 位于java.awt.Container.dispatchEventImpl(Container.java:2143) 位于java.awt.Component.dispatchEvent(Component.java:4565) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4621) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4282) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212) 位于java.awt.Container.dispatchEventImpl(Container.java:2129) 位于java.awt.Window.dispatchEventImpl(Window.java:2478) 位于java.awt.Component.dispatchEvent(Component.java:4565) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679) 在java.awt.EventQueue.access$000(EventQueue.java:85) 在java.awt.EventQueue$1.run(EventQueue.java:638) 在java.awt.EventQueue$1.run(EventQueue.java:636) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 在java.awt.EventQueue$2.run(EventQueue.java:652) 在java.awt.EventQueue$2.run(EventQueue.java:650) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:649) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:211) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:201) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122)

任何帮助都将不胜感激!

您的问题似乎是,在创建阵列时,JTextAreas尚未构建。Java是按值传递的,因此,当您传递稍后要构建的JTextAreas的名称时,它与传递null相同。

您的问题似乎是在如果您正在创建数组,则尚未构造JTextAreas。Java是按值传递的,因此当您传入稍后要构造的JTextAreas的名称时,它与传递null相同。

您需要替换此项:

MondayEng = new JTextArea();
MondayEng.setBounds(664, 68, 153, 100);
contentPane.add(MondayEng);
与:

否则,数组
Eng
仍然包含
null
s,您只需创建一个新的
JTextArea
对象,并使
MondayEng
引用该对象,而不是指向
Eng[0]
所指向的对象

但是,更正确的答案是在将
JTextArea
s传递给数组之前构造它们。类似于:

MondayEng = new JTextArea();
MondayEng.setBounds(664, 68, 153, 100);
contentPane.add(MondayEng);

// ...

static JTextArea[] Eng =  new JTextArea[]{
    MondayEng,
    TuesdayEng,
    WednesdayEng,
    ThursdayEng,
    FridayEng
};

您需要替换此:

MondayEng = new JTextArea();
MondayEng.setBounds(664, 68, 153, 100);
contentPane.add(MondayEng);
与:

否则,数组
Eng
仍然包含
null
s,您只需创建一个新的
JTextArea
对象,并使
MondayEng
引用该对象,而不是指向
Eng[0]
所指向的对象

但是,更正确的答案是在将
JTextArea
s传递给数组之前构造它们。类似于:

MondayEng = new JTextArea();
MondayEng.setBounds(664, 68, 153, 100);
contentPane.add(MondayEng);

// ...

static JTextArea[] Eng =  new JTextArea[]{
    MondayEng,
    TuesdayEng,
    WednesdayEng,
    ThursdayEng,
    FridayEng
};

由于JTextArea[][]subcs是一个二维数组,您需要注意正确生成数组。您创建数组的方式是一个一维数组。理想情况下,您可能需要创建类似的数组

JTextArea[][] subs = new JTextArea[][]{ {Eng, Hist, Math, Sci, Lang} };

由于JTextArea[][]subcs是一个二维数组,您需要注意正确生成数组。您创建数组的方式是一个一维数组。理想情况下,您可能需要创建类似的数组

JTextArea[][] subs = new JTextArea[][]{ {Eng, Hist, Math, Sci, Lang} };

为了更快地得到更好的帮助,请发布一条消息。为了更快地得到更好的帮助,请发布一条消息。谢谢!所以