This is JavaFX tutorial about JavaFX 2 ListView. The ListView class represents a scrollable list of items. Below is a example how our ListView will look in the end of this tutorial. In this tutorial, I am going to create JavaFX 2 ListView and implement OnMouseClicked Event Handler. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.application.Application; | |
import javafx.collections.FXCollections; | |
import javafx.collections.ObservableList; | |
import javafx.event.EventHandler; | |
import javafx.scene.Scene; | |
import javafx.scene.control.Label; | |
import javafx.scene.control.ListView; | |
import javafx.scene.input.MouseEvent; | |
import javafx.scene.layout.VBox; | |
import javafx.stage.Stage; | |
/** | |
* | |
* @author zoranpavlovic.blogspot.com | |
*/ | |
public class ListViewMain extends Application { | |
/** | |
* @param args the command line arguments | |
*/ | |
VBox vb = new VBox(); | |
Label lbl = new Label(); | |
ListView<String> list = new ListView<>(); | |
ObservableList<String> data =FXCollections.observableArrayList ( | |
"List index 0", | |
"List index 1", | |
"List index 2", | |
"List index 3"); | |
public static void main(String[] args) { | |
Application.launch(args); | |
} | |
@Override | |
public void start(Stage primaryStage) { | |
primaryStage.setTitle("JavaFX 2.0 ListView"); | |
//Adding data to ListView | |
list.setItems(data); | |
//Actions on clicked list item | |
initActions(); | |
//Adding BorderPane to the scene | |
vb.getChildren().addAll(list, lbl); | |
Scene scene = new Scene(vb,300,200); | |
primaryStage.setScene(scene); | |
primaryStage.show(); | |
} | |
public void initActions(){ | |
//Detecting mouse clicked | |
list.setOnMouseClicked(new EventHandler<MouseEvent>(){ | |
@Override | |
public void handle(MouseEvent arg0) { | |
//Check wich list index is selected then set txtContent value for that index | |
if(list.getSelectionModel().getSelectedIndex() == 0){ | |
lbl.setText("Selected index: 0"); | |
} | |
else if(list.getSelectionModel().getSelectedIndex() == 1){ | |
lbl.setText("Selected index: 1"); | |
} | |
else if(list.getSelectionModel().getSelectedIndex() == 2){ | |
lbl.setText("Selected index: 2"); | |
} | |
else if(list.getSelectionModel().getSelectedIndex() == 3){ | |
lbl.setText("Selected index: 3"); | |
} | |
} | |
}); | |
} | |
} |
Hi, Good work for all the blogs. It would be more helpful for JavaFX freshers if you have shown the Horizantal list view example also.
ReplyDeleteThanks & Regards,
Sai Pradeep Dandem.
Thanks for the idea, I'll do tutorial about it. :)
ReplyDeleteThat bunch of if-else-if in the click event looks awful. Change it to use binding or something like that
ReplyDeleteThanks for advice.
ReplyDeletethe example is nice can you give me an example for create a list by selecting an item in the list the data should be coming from database updated in the tableview.
ReplyDeleteI hope that I will have time to do tutorial for that. ;)
ReplyDelete