1
클릭 할 때 이미지를 전환하는 맞춤 버튼이있어서 mouseEventClick을 처리해야합니다. 그러나 그것은 "inputEvent (NiftyInputEvent inputEvent)"함수의 keyEvent에만 반응합니다 ...NiftyGUI가 포함 된 맞춤 컨트롤러
NiftyMousePrimaryClickedEvent를 전달해야하지만 Controller 클래스를 구현하지 않아야합니다. ? 여기
내 사용자 정의 이미지 버튼 : 여기
public class ImageButtonControl implements Controller{
private Nifty nifty;
private Screen screen;
private Element img1;
private Element img2;
private Properties properties;
private boolean isPressed = false;
private ImageRenderer render1;
private NiftyImage imageNifty1;
private NiftyImage imageNifty2;
private FocusHandler focusHandler;
@Override
public void bind(
final Nifty nifty,
final Screen screenParam,
final Element element,
final Properties parameter,
final Attributes controlDefinitionAttributes) {
this.nifty = nifty;
this.screen = screenParam;
this.properties = parameter;
img1 = element.findElementByName("image-1");
img2 = element.findElementByName("image-2");
initImages(this.nifty, this.screen, properties.getProperty("img-1"),properties.getProperty("img-2"));
//focusHandler = screenParam.getFocusHandler();
System.out.println("Initialisation completed.");}
@Override
public void init(Properties prprts, Attributes atrbts) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void onStartScreen() {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void onFocus(final boolean getFocus) {
//super.onFocus(getFocus);
System.out.println("---Clicked event focus---");
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public boolean inputEvent(NiftyInputEvent inputEvent) {
System.out.println("---Clicked event focus---");
return false;
}
public void switchImage(){
//ImageRenderer imageRenderer = img1.getRenderer(ImageRenderer.class);
if(isPressed){
isPressed = false;
//img1.show();
//img2.hide();
System.out.println("Clicked event");
}else{
isPressed = true;
//img1.hide();
//img2.show();
System.out.println("Clicked event");
}
}
private void initImages(Nifty nifty, Screen screen, String imgPath1, String imgPath2) {
NiftyRenderEngine renderEngine = nifty.getRenderEngine();
imageNifty1 = renderEngine.createImage(screen,imgPath1,false);
imageNifty2 = renderEngine.createImage(screen,imgPath2,false);
}}
내 XML입니다 :
<controlDefinition name="imagebutton" style="nifty-panel-style" controller="de.lessvoid.nifty.customs.imagebutton.ImageButtonControl">
<panel style="#panel" childLayout="overlay" focusable="true" visibleToMouse="true" width="$width" heigth="$height">
<image id="img-1" name="image-1" style="#select" filename="$img1" visibleToMouse="true"/>
<image id="img-2" name="image-2" style="#select" filename="$img2" visibleToMouse="true"/>
</panel>
</controlDefinition>