我试图获取传递给JOptionPane的自定义按钮返回的值。但是,我通过的按钮根本不返回任何值。仅当按下退出按钮时,才返回-1的值。我需要这样做,因为我正在更改启用或禁用的按钮的属性。我假设我需要按钮以某种方式将某些信息返回给JOptionPane。任何想法?
JButton button1= new JButton("Button 1");
JButton button2= new JButton("Button 2");
button1.setEnabled(false);
int value = JOptionPane.showOptionDialog(null, "Heres a test message", "Test", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{button1, button2}, button1);
JOptionPane.showMessageDialog(null, "You entered " + value);
Nb这与我以前的问题有关-JOptionPane灰色输出一个按钮
我尝试像您说的那样设置按钮的值,但是它们从不返回OK或CANCEL。
每当检查按钮的值时,它们都不会返回我设置的值。
JButton button1= new JButton("Button1");
JButton button2= new JButton("Button2");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
// set the value of the option pane
pane.setValue(JOptionPane.OK_OPTION);
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
// set the value of the option pane
pane.setValue(JOptionPane.CANCEL_OPTION);
}
});
if (JOptionPane.showOptionDialog(null, "Pick a button", "Pick", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{button1, button2}, button1) == JOptionPane.OK_OPTION) {
JOptionPane.showMessageDialog(null, "Button1");
}
else{
JOptionPane.showMessageDialog(null, "Button2");
}
参见上文,无论如何我总是会得到button2弹出窗口。
在我链接到您上一个问题的示例中,按钮使用该JOptionPane#setValue
方法设置返回值。这使您可以继续正常使用API,同时为您提供定制的服务。
final JButton okay = new JButton("Ok");
okay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
// set the value of the option pane
pane.setValue(JOptionPane.OK_OPTION);
}
});
仔细查看JOptionPane.dialog上的Disable
ok按钮,直到用户输入为止
更新
我已经遍历代码并更正了actionPerformed
方法,以使其能够返回有效值…
final JButton okay = new JButton("Ok");
okay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(okay);
}
});
okay.setEnabled(false);
final JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane pane = getOptionPane((JComponent)e.getSource());
pane.setValue(cancel);
}
});
由options
数组中的值的索引返回的值(最后一个参数)
举例来说…
int value = JOptionPane.showOptionDialog(
null,
field,
"Get",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
new Object[]{okay, cancel},
okay);
如果用户单击“确定”按钮,则返回值为0
,或者,如果他们选择“取消”按钮,则返回值为1
我在考虑用Java更改。基本上,我需要添加打印按钮沿ok按钮的对话,所以如果用户点击ok简单地关闭它,或者如果点击打印按钮,然后继续对打印按钮actionevent。
问题内容: 我可以在自定义按钮上使用showInputDialog,还是可以在showInputDialog上重命名“ OK”和“ Cancel”按钮。 问题答案: 每种方法都有很多变体。选择一个通常可以使您访问所需的功能级别。就您而言,您正在寻找 在此处查看其javadoc :。请注意,您不会在这里更改按钮的颜色(因为它们取决于外观),而是更改其文本(通常来说已经足够,因为您也可以在此处设置显示
我在这里看到了一些例子:http://docs.oracle.com/javase/7/docs/api/javax/swing/joptionpane.html 它似乎表明我应该用一个自定义的按钮列表来替换我的组合框,这不是我想要的。我需要有3个按钮(好的,跳过,取消),以及项目列表。 更新:为了说明我的GUI应该是什么样子: null 目前我的代码如下所示: 灵感来自:Java:showInp
> 标高,同时具有自定义可绘制。 在用户触摸的地方启动涟漪效果。
问题内容: 如何接受自定义类型查询参数? 上面的行在启动服务器时给出错误 问题答案: 查看有关注入的可接受类型的文档。(这同样适用于所有其他注释) 是原始类型 有一个接受单个String参数的构造函数 有一个名为或的静态方法,该方法接受单个String参数(例如,参见) 已注册ParamConverterProvider JAX-RS扩展SPI的实现,该扩展返回一个ParamConverter实例
描述 (Description) Framework7允许您将自定义上下文传递给任何动态页面或任何加载的Ajax。 data-context属性用于传递自定义上下文,您需要在其中放置有效的字符串化JSON,如下所示 - <a href = "interests.html" class = "item-link item-content" data-context = '{ "sport":