Как я могу отобразить ImageIcon в JButton? - PullRequest
0 голосов
/ 11 марта 2020
public ImageIcon getIcon(){
   return button.getIcon();
}

public void moveTo(Square j){
   JButton current = new JButton();
   current = button;
   button.setIcon(j.getIcon());
   button.setIcon(current.getIcon());
}

Вот проблема. Button - это просто JButton без контента, и с условиями я добавляю другой контент в Button. Хотя, когда я создал метод перемещения, который будет переключать два изображения двух кнопок, я не смог получить ImageIcon из JButton. Он сообщает об этой ошибке в первом методе:

Icon cannot be converted to ImageIcon

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Вы можете добавить его через конструктор:

JButton button = new JButton("text", icon);

Лучший способ - создать действие и создать кнопку из действия. Затем вы можете обновить значок действия, и оно будет обновляться везде, где используется действие: кнопка, строки меню, всплывающие меню и т. Д. c.

Action action = new AbstractAction("text", icon) {
    public void actionPerformed(ActionEvent e) {
    }
}
//place the action in an ActionMap 
Jbutton button = new JButton(action);

Затем, когда вам нужно обновить значок это будет просто

getActionMap().get(key).putValue(Action.LARGE_ICON_KEY, icon); //for buttons
getActionMap().get(key).putValue(Action.SMALL_ICON_KEY, icon); //for menus
1 голос
/ 11 марта 2020

Icon - это интерфейс, который реализован классом ImageIcon, поэтому каждый ImageIcon по своей сути является Icon, поэтому вы можете преобразовать Icon в imageIcon следующим образом

public ImageIcon getIcon(){
  return (ImageIcon)button.getIcon(); 
 /*getIcon() returns Icon and  ImageIcon is child 
 of Icon so you can cast as you cast parent class reference to child class in this 
 case it is interface acting as parent*/
}
...