能量棒的颜色根据它们的值改变?

时间:2015-05-14 16:08:19

标签: java progress-bar

我创建了此方法来检查进度条中的值。它在减少时按预期工作,即它变为红色,黄色和橙色。但是当我增加值时,颜色不会更新。因此,当它低于25并变为红色时,当我增加能量条的值时,它仍然是那种颜色。我在这做错了什么?提前致谢。

NotFoundHttpException in Controller.php line 259:
Controller method not found.
in Controller.php line 259
at Controller->missingMethod('rezeptliste')
at call_user_func_array(array(object(IndexController), 'missingMethod'), array('_missing' => 'rezeptliste')) in Controller.php line 246
at Controller->callAction('missingMethod', array('_missing' => 'rezeptliste')) in ControllerDispatcher.php line 162
at ControllerDispatcher->call(object(IndexController), object(Route), 'missingMethod') in ControllerDispatcher.php line 107
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 108
at ControllerDispatcher->callWithinStack(object(IndexController), object(Route), object(Request), 'missingMethod') in ControllerDispatcher.php line 67
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\IndexController', 'missingMethod') in Route.php line 204
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 701
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Router.php line 703
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 670
at Router->dispatchToRoute(object(Request)) in Router.php line 628
at Router->dispatch(object(Request)) in Kernel.php line 214
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 43
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 17
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
at Pipeline->then(object(Closure)) in Kernel.php line 115
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
at Kernel->handle(object(Request)) in index.php line 53

我做了这些改变,但仍然没有快乐。

public void checkEnergyBar(JProgressBar EnergyBar){
    if(EnergyBar.getValue()<25){
        EnergyBar.setForeground(Color.RED);
    }else if(EnergyBar.getValue()<51){
        EnergyBar.setForeground(Color.YELLOW);
    }else if(EnergyBar.getValue()<76){
        EnergyBar.setForeground(Color.orange);
    }else if(EnergyBar.getValue()<101){
        EnergyBar.setForeground(Color.GREEN);
    }

     EnergyBar.repaint();

}

1 个答案:

答案 0 :(得分:0)

就个人而言,我认为JProgressBar被窃听了。我有自己的,更可定制的制作进度条的方法。

不使用预制的JProgressBar,而是使用显示图形的原始方式:Canvas

创建canvas的子类,然后重写paint方法,添加变量以表示颜色和值,并添加setValue方法。在paint方法中,根据值setForeground(color)设置颜色,然后只需使用graphics参数绘制一个矩形(0,0,value,getHeight())。

这就是我个人如何制作进度条。这还具有以下优点:
A)你可以添加边框&amp;画布的背景颜色,就像进度条一样 B)您可以使用graphics.paintImage并将图像缩放/裁剪为正确的大小

希望这有助于您的进度条:)