Событие работающее с ListView - Java
Формулировка задачи:
Здравствуйте! Пытаюсь научиться работать с JavaFX и создавать графический интерфейс для приложений. Столкнулся с такой проблемой: мне нужно брать одно значение из ListView и выводить его параметры в Label, но я не знаю какое событие и к чему вешать. Вроде нарыл getselectionModel(), но не понимаю как его применить.
Вот мой контроллер
вот fxml
Листинг программы
- package sample;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.ResourceBundle;
- import javafx.beans.property.ListProperty;
- import javafx.beans.property.SimpleListProperty;
- import javafx.collections.FXCollections;
- import javafx.event.ActionEvent;
- import javafx.fxml.FXML;
- import javafx.fxml.Initializable;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.ListView;
- public class Controller implements Initializable {
- @FXML
- private Button button;
- @FXML
- private Label label1;
- @FXML
- private ListView myListView;
- @FXML
- private ListView myListView1;
- protected List<String> asianCurrencyList = new ArrayList<>();
- protected List<String> europeanCurrencyList = new ArrayList<>();
- protected ListProperty<String> listProperty = new SimpleListProperty<>();
- protected ListProperty<String> listProperty1 = new SimpleListProperty<>();
- @FXML
- private void handleButtonAction(ActionEvent event) {
- listProperty.set(FXCollections.observableArrayList(europeanCurrencyList));
- }
- @Override
- public void initialize(URL url, ResourceBundle rb) {
- asianCurrencyList.add("CNH");
- asianCurrencyList.add("JPY");
- asianCurrencyList.add("HKD");
- asianCurrencyList.add("KRW");
- asianCurrencyList.add("SGD");
- europeanCurrencyList.add("EUR");
- europeanCurrencyList.add("GBP");
- europeanCurrencyList.add("NOK");
- europeanCurrencyList.add("SEK");
- europeanCurrencyList.add("CHF");
- europeanCurrencyList.add("HUF");
- myListView.itemsProperty().bind(listProperty);
- myListView1.itemsProperty().bind(listProperty1);
- //This does not work, you can not directly add to a ListProperty
- //listProperty.addAll( asianCurrencyList );
- listProperty.set(FXCollections.observableArrayList(asianCurrencyList));
- listProperty1.set(FXCollections.observableArrayList(europeanCurrencyList));
- }
- }
Листинг программы
- <?xml version="1.0" encoding="UTF-8"?>
- <?import java.lang.*?>
- <?import java.util.*?>
- <?import javafx.scene.*?>
- <?import javafx.scene.control.*?>
- <?import javafx.scene.layout.*?>
- <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">
- <children>
- <Button fx:id="button" layoutX="94.0" layoutY="345.0" onAction="#handleButtonAction" prefHeight="26.0" prefWidth="100.0" text="Click Me!" />
- <ListView fx:id="myListView" layoutX="14.0" layoutY="21.0" prefHeight="313.0" prefWidth="100.0" />
- <ListView fx:id="myListView1" layoutX="167.0" layoutY="21.0" prefHeight="313.0" prefWidth="100.0" />
- <Label fx:id="label1" layoutX="130.0" layoutY="394.0" text="Label" />
- </children>
- </AnchorPane>
Решение задачи: «Событие работающее с ListView»
textual
Листинг программы
- myListView.getSelectionModel().selectedItemProperty().addListener(
- new ChangeListener<String>(){
- @Override
- public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue){
- label.setText(newValue);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д