1

I'm trying to make a toggle button (F) to hide or show my chat area (JTextArea) which is on a JScrollPane (sp) and it's not working...

Here is what I do...

I have it set as public...

public JScrollPane sp;

and I set it inside the init() like this: JScrollPane sp = new JScrollPane(c);

c is the JTextArea....

 if (e.getKeyCode() == KeyEvent.VK_F)
{
    if (sp.isVisible())
    {
        sp.setVisible(false);
    }
    else
    {
        sp.setVisible(true);
    }
}

This is my error:

Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
    at tileGen.keyPressed(tileGen.java:522)
    at java.awt.Component.processKeyEvent(Unknown Source)
    at javax.swing.JComponent.processKeyEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(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)

This is line 522: if (sp.isVisible()) {

What am I doing wrong?

3 Answers 3

4

If you intend to set the instance variable, get rid of the JScrollPane sp in init() (the line should just be sp = new JScrollPane(c);). With it in, you're declaring and setting a local variable, and the object's sp never gets set.

Sign up to request clarification or add additional context in comments.

Comments

2

--- Edited in response to having line 522 ---

Because you have JScrollPane sp = new JScrollPane(...); you are hiding the member variable sp with a variable having the same name. This means that once you leave the init() block the locally defined sp variable will disappear and the JScrollPane will not have been stored in the member variable sp.

Which leads to the following ....

You thought that the member variable sp was assigned to an object, but it is still null. You need to make sure that the member variable sp is not null before you can call methods on it.

--- Original post follows ---

Look at line 522 of tileGen.java. Odds are you are calling a method on an object there, like so

someObject.setValue(someValue);

the problem is that someObject isn't set to an object, it is still null.

Comments

1

Why there are two declarations of sp ?

public JScrollPane sp;

JScrollPane sp = new JScrollPane(c);

2 Comments

So that he can ask a question on StackOverflow :-)
Oh, I think I should be taking out JScrollPane out of JScrollPane sp = new JScrollPane(c);!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.