[英]How to add onClick listener for each row to dynamically generated table in JavaFX 2
[英]How to add onclick listener on CardPane items (Gluon with JavaFX)
我在fxml文件中使用CardPane組件:
<?import com.gluonhq.charm.glisten.control.CardPane?>
<CardPane fx:id="cardList">
<Label text="label1" />
<Label text="label2" />
</CardPane>
與我的控制器:
public class Sample extends Pane {
@FXML
private CardPane cardList;
private final String FXML_FILE = "sample.fxml";
public Sample()
{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getClassLoader().getResource(FXML_FILE));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try
{
fxmlLoader.load();
}
catch (IOException ioexception)
{
throw new RuntimeException(ioexception);
}
}
protected void clickItem()
{
System.out.println("The item 'x' was clicked!");
}
是否可以在CardPane的項目中添加偵聽器,以便在單擊某個項目時調用clickItem()方法? 如何進行 ? 我如何確定單擊了哪個項目?
這是我提供的解決方案,請分享您對這種方法的看法:
public XMLFileChooserComponentController()
{
[...]
ObservableList<Label> labels = xmlFiles.getItems();
labels.forEach((label) -> {
label.setOnMouseClicked(this::clickItem);
});
}
public void clickItem(MouseEvent event)
{
Label label = (Label) event.getSource();
if (label.getId().equals("label1"))
{
System.out.println("The label " + label.getId() + " was clicked!");
}
if (label.getId().equals("label2"))
{
System.out.println("The label " + label.getId() + " was clicked!");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.