簡體   English   中英

如何在CardPane項目上添加onclick偵聽器(帶有JavaFX的Gluon)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM