【发布时间】:2015-12-04 18:30:23
【问题描述】:
嗨,我知道这应该是基础知识,但我真的卡住了 我想返回被点击的按钮的 int 值并关闭对话框
public static int showButtonDialog(String title, String label, String[] button)
{
ArrayList<Button> buttons = new ArrayList<>();
Stage dialog = new Stage();
boolean value = false;
GridPane pain = new GridPane();
Scene layer = new Scene(pain);
dialog.setScene(layer);
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.setTitle(title);
pain.add(new Label(label), 0, 0);
for (int i = 0; i < button.length; i++)
{
final int finalI = i;
buttons.add(new Button(button[i].toString()));
pain.add((buttons.get(i)), i, 1);
buttons.get(i).setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent event)
{
changeint(finalI);
change(value);
dialog.close();
}
});
}
dialog.showAndWait();
if (value)
{
return temp;
}
else
{
return -1;
}
}
但是我怎样才能让方法句柄返回一个 int 它是一个覆盖方法。
【问题讨论】:
-
你不能。
handle方法是void。无论如何,您会在哪里收到返回值? -
@James_D 对,
handle()方法无效 -
但是如何实现返回按钮的值我点击了一个如此简单的问题我已经尝试在内部匿名类中编写另一个方法但他只启动不返回任何东西的句柄.. . 我也想知道为什么我的问题被否决了,是的,我现在是一个简单的问题......
-
不是从
handle方法返回值,而是调用另一个方法button.setOnAction(event->doSomeThingMethod()); -
@Mralladin,我不想给你坏消息,但这种方法永远不会返回你想要的值。它的工作是设置 EventHandlers 然后立即返回,它甚至会在按钮被按下之前返回。所以你必须重新考虑你的代码,并通过在按下按钮时调用一个方法来做你想做的事情,请参阅上面的 Colns Abt 的评论,或下面的我的回答,以获得一些想法。祝你好运!
标签: java loops javafx eventhandler