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

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

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

Здравствуйте! Пытаюсь научиться работать с JavaFX и создавать графический интерфейс для приложений. Столкнулся с такой проблемой: мне нужно брать одно значение из ListView и выводить его параметры в Label, но я не знаю какое событие и к чему вешать. Вроде нарыл getselectionModel(), но не понимаю как его применить. Вот мой контроллер
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));
        }

}
вот fxml
<?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);
     }
}

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


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

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

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