private ColorWheelPanel( ColorListener listener, boolean enableOpacity, boolean opacityInPercent) { setLayout(new BorderLayout()); setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 0)); myColorWheel = new ColorWheel(); add(myColorWheel, BorderLayout.CENTER); myColorWheel.addListener(listener); myBrightnessComponent = new SlideComponent("Brightness", true); myBrightnessComponent.setToolTipText("Brightness"); myBrightnessComponent.addListener( value -> { myColorWheel.setBrightness(1f - (value / 255f)); myColorWheel.repaint(); }); add(myBrightnessComponent, BorderLayout.EAST); if (enableOpacity) { myOpacityComponent = new SlideComponent("Opacity", false); myOpacityComponent.setUnits( opacityInPercent ? SlideComponent.Unit.PERCENT : SlideComponent.Unit.LEVEL); myOpacityComponent.setToolTipText("Opacity"); myOpacityComponent.addListener( integer -> { myColorWheel.setOpacity(integer.intValue()); myColorWheel.repaint(); }); add(myOpacityComponent, BorderLayout.SOUTH); } }
public void setColor(Color color, Object source) { float[] hsb = new float[3]; Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), hsb); myBrightnessComponent.setValue(255 - (int) (hsb[2] * 255)); myBrightnessComponent.repaint(); myColorWheel.dropImage(); if (myOpacityComponent != null && source instanceof ColorPicker) { myOpacityComponent.setValue(color.getAlpha()); myOpacityComponent.repaint(); } myColorWheel.setColor(color, source); }