【问题标题】:JTextArea not setting, throwing up errorJTextArea 未设置,抛出错误
【发布时间】:2015-04-06 15:35:52
【问题描述】:

所以我从数据库中提取信息并将它们放入我的 GUI 中的字段/框中。

houseText 和 addressText 都是文本字段,它们设置得很好,但是 oInfo 是一个 JTextArea,当我尝试设置它时它会导致错误。我也尝试使用“附加”,但它没有改变任何东西。有什么解决办法吗?

infoHolder = dBStatement.executeQuery("SELECT * FROM House");
infoHolder.next();

hName = infoHolder.getString("Name");
hAddress = infoHolder.getString("Address");
numRooms = infoHolder.getInt("numRooms");
Type = infoHolder.getString("Type");
charge = infoHolder.getString("roomCharge");
Access = infoHolder.getString("dAccess");
Info = infoHolder.getString("oInfo");

// the below print prints all the details to prove that the database has been read correctly.
System.out.println(hName + " " + hAddress + " " + numRooms + " " + Type + " " + charge + " " + Access + " " + Info);

houseText.setText(" " + hName); 
addressText.setText(" " + hAddress);
//roomNumber.setSelectedItem(numRooms);
//roomType.setSelectedItem(" " + Type);
//chargeRoom.setSelectedItem(" " + charge);
//access.setSelectedItem(" " + Access);
oInfo.setText(Info);

堆栈跟踪:

java.lang.NullPointerException at FinalBAndB.initialiseDatabase(FinalBAndB.java:124) 
    at FinalBAndB$1.run(FinalBAndB.java:274) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$400(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

【问题讨论】:

  • 您遇到了什么错误,您从哪里调用此代码?它是事件处理程序还是其他线程?
  • @npinti 我正在从我的公共静态 void main 调用代码。上面的代码在它自己的名为initialiseDatabase()的方法中;文本字段设置完美,但文本区域(oinfo)是问题所在。我在打印堆栈跟踪的方法上有一个异常处理程序,但它不再具有启发性。 infoHolder 是一个结果集。
  • 没有启发乔的可能启发杰克。堆栈跟踪不是 FYEO。
  • java.lang.NullPointerException at FinalBAndB.initialiseDatabase(FinalBAndB.java:124) at FinalBAndB$1.run(FinalBAndB.java:274) at java.awt.event.InvocationEvent.dispatch(未知来源)在 java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$400(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) ) 在 java.security.AccessController.doPrivileged(Native Method)
  • 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt。 EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread。 run(Unknown Source) 那是堆栈跟踪。

标签: java get set jtextfield jtextarea


【解决方案1】:

为了完整起见添加答案和其他一些次要信息。

堆栈跟踪:

java.lang.NullPointerException at FinalBAndB.initialiseDatabase(FinalBAndB.java:124) 
    at FinalBAndB$1.run(FinalBAndB.java:274) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$400(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

表示您正在尝试访问未初始化的对象。事实证明是这样的。

附加信息: 与许多其他语言一样,Java 使用特定线程来执行其所有 UI 操作。在 Java 中,这称为Event Dispatcher Thread (EDT)。由于您正在更新 UI 组件的文本,因此您需要确保操作通过 EDT 的操作上下文进行。为此,通常会恢复使用SwingUtilities.invokeLater(Runnable runnable)。请确保您遵循此模式以避免任何潜在的跨线程操作问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多