Событие работающее с ListView - Java

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пытаюсь научиться работать с JavaFX и создавать графический интерфейс для приложений. Столкнулся с такой проблемой: мне нужно брать одно значение из ListView и выводить его параметры в Label, но я не знаю какое событие и к чему вешать. Вроде нарыл getselectionModel(), но не понимаю как его применить. Вот мой контроллер
Листинг программы
  1. package sample;
  2. import java.net.URL;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.ResourceBundle;
  6. import javafx.beans.property.ListProperty;
  7. import javafx.beans.property.SimpleListProperty;
  8. import javafx.collections.FXCollections;
  9. import javafx.event.ActionEvent;
  10. import javafx.fxml.FXML;
  11. import javafx.fxml.Initializable;
  12. import javafx.scene.control.Button;
  13. import javafx.scene.control.Label;
  14. import javafx.scene.control.ListView;
  15. public class Controller implements Initializable {
  16. @FXML
  17. private Button button;
  18. @FXML
  19. private Label label1;
  20. @FXML
  21. private ListView myListView;
  22. @FXML
  23. private ListView myListView1;
  24.  
  25. protected List<String> asianCurrencyList = new ArrayList<>();
  26. protected List<String> europeanCurrencyList = new ArrayList<>();
  27. protected ListProperty<String> listProperty = new SimpleListProperty<>();
  28. protected ListProperty<String> listProperty1 = new SimpleListProperty<>();
  29. @FXML
  30. private void handleButtonAction(ActionEvent event) {
  31. listProperty.set(FXCollections.observableArrayList(europeanCurrencyList));
  32. }
  33.  
  34. @Override
  35. public void initialize(URL url, ResourceBundle rb) {
  36. asianCurrencyList.add("CNH");
  37. asianCurrencyList.add("JPY");
  38. asianCurrencyList.add("HKD");
  39. asianCurrencyList.add("KRW");
  40. asianCurrencyList.add("SGD");
  41. europeanCurrencyList.add("EUR");
  42. europeanCurrencyList.add("GBP");
  43. europeanCurrencyList.add("NOK");
  44. europeanCurrencyList.add("SEK");
  45. europeanCurrencyList.add("CHF");
  46. europeanCurrencyList.add("HUF");
  47. myListView.itemsProperty().bind(listProperty);
  48. myListView1.itemsProperty().bind(listProperty1);
  49. //This does not work, you can not directly add to a ListProperty
  50. //listProperty.addAll( asianCurrencyList );
  51. listProperty.set(FXCollections.observableArrayList(asianCurrencyList));
  52. listProperty1.set(FXCollections.observableArrayList(europeanCurrencyList));
  53. }
  54.  
  55. }
вот fxml
Листинг программы
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?import java.lang.*?>
  3. <?import java.util.*?>
  4. <?import javafx.scene.*?>
  5. <?import javafx.scene.control.*?>
  6. <?import javafx.scene.layout.*?>
  7. <AnchorPane id="AnchorPane" prefHeight="437.0" prefWidth="288.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="sample.Controller">
  8. <children>
  9. <Button fx:id="button" layoutX="94.0" layoutY="345.0" onAction="#handleButtonAction" prefHeight="26.0" prefWidth="100.0" text="Click Me!" />
  10. <ListView fx:id="myListView" layoutX="14.0" layoutY="21.0" prefHeight="313.0" prefWidth="100.0" />
  11. <ListView fx:id="myListView1" layoutX="167.0" layoutY="21.0" prefHeight="313.0" prefWidth="100.0" />
  12. <Label fx:id="label1" layoutX="130.0" layoutY="394.0" text="Label" />
  13. </children>
  14. </AnchorPane>

Решение задачи: «Событие работающее с ListView»

textual
Листинг программы
  1. myListView.getSelectionModel().selectedItemProperty().addListener(
  2.      new ChangeListener<String>(){
  3.    @Override
  4. public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue){
  5.     label.setText(newValue);
  6.      }
  7. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут