0

我制作了一个滑块 ( brightSlider),我想将它添加到颜色选择器中。但是我无法添加它,所以我希望它至少只在设置组(SetupGroup)打开时才可见。

所以在 中draw(),我为此写了一个条件。但我得到空指针异常。当我不初始化对象时,我通常会收到此错误。但在这种情况下,我不知道如何初始化一个组。对于这个问题我能做些什么?

    import controlP5.*; //import ControlP5 library
    import processing.serial.*;
    
    Button button1;
    Group SetupGroup; //Should I somehow initialize this?

    void setup() { //Same as setup in arduino
    
      brightSlider = new BrightSlider(25,30,200,30,0,100); 

    Group SetupGroup = cp5.addGroup("SETUP")
    .setPosition(90,100)
    .setWidth(150)
    .setHeight(30)
    .setFont(font2);
//
//
//}

void draw() {  //Same as loop in arduino

 background(250);    // Setting the background to white

    if(mousePressed){
      brightSlider.checkPressed(mouseX,mouseY);
    }   

        if(SetupGroup.isOpen()){
        brightSlider.display();
        }
//
//
}

仅当我写if(SetupGroup.isOpen())行时才会收到此错误。

这是错误:

在此处输入图像描述

4

2 回答 2

2
Group SetupGroup = cp5.addGroup("SETUP")
   .setPosition(90,100)
   .setWidth(150)
   .setHeight(30)
   .setFont(font2);

这声明了一个全新的变量,名为SetupGroup. 然后该方法结束,因此,这个新的局部变量立即被丢弃。您的名为 的字段SetupGroup仍然为空。

Group把前面的去掉就行了。Type name;正在声明一个新变量,您可以快捷Type name; name = ...;方式Type name = ...;.

name = ...;为现有变量分配新值。

于 2021-08-20T12:06:37.173 回答
1
Group SetupGroup; //Should I somehow initialize this?

是的!

Java 中未初始化的字段(原语除外)等于null.

您的代码虽然尝试执行null.isOpen(),但因为null基本上没有任何方法,所以它没有任何方法。尝试在不存在的对象上执行方法会导致NullPointerException.

于 2021-08-20T12:05:39.657 回答