MenuItem
의 아이콘이 필요합니다.JavaFX setGraphic()이 MenuItem의 아이콘을 표시하지 않습니다.
public class IconFactory {
private static ImageView HLP_BOOK_JFX;
public enum ICONS {
BASCET_REMOVE, BASCET_PUT, SAVE, OPEN, ARROW_RIGHT, ARROW_LEFT, ARROW_UP, ARROW_DOWN, CLOCK, ANALOG_SIGNAL, DIGITAL_SIGNAL, REFRESH, GREEN_PLUS, NETWORK, OK, CANCEL, RIGHT_NAV2, LEFT_NAV2, PLAY, PAUSE, LIST_ADD, PAGE_FIND, SET_PARAM, DOWNLOAD, UPLOAD, LOG_FILE, WARNING, INFO, LOG_DIAG, DATA_TRANS, TREE, FILTER, SEARCH, PARAM, ERASE, RESETDEF, RESETDEF2, DEBUG_BUG, INTERNATIONAL, CLOSE, HLP_BOOK
}
public static ImageView getImage(ICONS en) {
switch (en) {
case HLP_BOOK:
if (HLP_BOOK_JFX == null)
HLP_BOOK_JFX = new ImageView(new Image(IconFactory.class.getResourceAsStream("help_book.png")));
return HLP_BOOK_JFX;
}
return null;
}
을 나는 그것이 완벽하게 작동하는 단일 메뉴 항목 에 대한 myMenuItem.setGraphic(IconFactory.getImage(ICONS.HLP_BOOK))
를 사용하는 경우 :는 "노동자 클래스"아이콘의 ImageView
를 얻기 위해 같은
이
입니다. 저도 같은 그래픽을 루프에서이 개 메뉴를 생성하고 설정하려는 경우그러나 한 다음, 하나 MenuItem
는 표시되지 아이콘이 없습니다. (아래 코드의 첫 번째 루프).
내 코드 : 당신이 볼 수 있듯이
while (keys.hasMoreElements()) {
// that will do 2 loops, do not care about how
MenuItem subMenuHelp = new MenuItem("MenuItem");
subMenuHelp.setGraphic(IconFactory.getImage(ICONS.HLP_BOOK));
subMenuHelp.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// do not care
openHelpFile(link);
}
});
System.out.println(((ImageView) subMenuHelp.getGraphic()).toString());
myMenu.getItems().add(subMenuHelp);
}
, 나는 그래픽이 현재 항목에 대한 설정되어 있는지 확인하기 위해 System.out.println
을 추가했다. 콘솔 결과 : 같은 ImageView
에 두 줄 (MenuItem의) :
[email protected][styleClass=image-view]
[email protected][styleClass=image-view]
나는 정확히 같은 한 스윙에 (그러나 Icons
및 .setIcons()
기능)과 아주 잘했다. 또한 강제로 표시하는 "다시 그리기"기능을 찾지 만 어떤 방법도 사용하지 않았습니다.
희망을 보내주세요.
오! 빠른 도움을 주셔서 대단히 감사합니다. 그래서 각 호출시 새로운 ImageView를 반환하도록 IconFactory를 업데이트했으며 완벽하게 작동합니다. –