Как отобразить изображение по нажатию кнопки с помощью LWUIT
Я пытаюсь написать приложение, используя LWUIT, где я хочу, чтобы изображение отображалось при нажатии кнопки. У меня есть следующий код. Но я получаю исключение, если кнопка нажата дважды. Пожалуйста, помогите мне отобразить изображение без каких-либо исключений.
final Form f = new Form("Static TAF");
Button TrackMe = new Button("TrackMe");
Image TrackMeicon = null;
TrackMeicon = Image.createImage("/hello/follow.jpeg");
final Label TrackMeLabel = new Label(TrackMeicon);
TrackMe.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
System.out.println("Removing the previous Images");
f.addComponent(TrackMeLabel);
}
});
Пожалуйста помоги
3 ответа
Когда вы нажимаете кнопку в первый раз, изображение добавляется в форму. При повторном нажатии это изображение уже существует в форме. Итак, это бросит "Component already exists"
исключение.
Ваш слушатель действия должен быть
TrackMe.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
System.out.println("Removing the previous Images");
f.removeComponent(TrackMeLabel);
f.addComponent(TrackMeLabel);
}
});
TrackMe.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
System.out.println("Removing the previous Images");
final Label TrackMeLabel = new Label(TrackMeicon);
f.removeAll();
f.addComponent(TrackMeLabel);
}
});
Если вы хотите добавить только одно изображение, вы можете использовать это:
....
TrackMe.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
if(!f.containes(TrackMeLabel))
f.addComponent(TrackMeLabel);
}
если вам нужны изображения, вам нужно что-то подобное:
....
TrackMe.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
Image TrackMeicon = null;
TrackMeicon = Image.createImage("/hello/follow.jpeg");
Label TrackMeLabel = new Label(TrackMeicon);
f.addComponent(TrackMeLabel);
}