我有一个财务计划,在选择股票并选择价格和数量之后,我们在joptionpane面板上有两个选项" buy"和"取消"。对于我的生活,我无法让这个工作。任何帮助将非常感激。谢谢。我将int buyNow作为构造函数中的一个字段。
final JButton buy = new JButton("Buy");
buy.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent evt)
{
buyStock();
NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.US);
double doubleBal = sql.getBalance().doubleValue();
String bal = nf.format(doubleBal);
jLabel_DisplayBalance.setText(bal);
double doubleCash = sql.getCash().doubleValue();
String cash = nf.format(doubleCash);
jLabel_DisplayCash.setText(cash);
double doubleStock = sql.getStock().doubleValue();
String stock = nf.format(doubleStock);
jLabel_DisplayStock.setText(stock);
System.out.println(buyNow);
}
});
final JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent evt)
{
System.out.println(buyNow);
}
});
JButton[] buttons = {buy, cancel};
buyNow = JOptionPane.showOptionDialog(rootPane, getBuyOrSellPanel ("Buy"), title,
JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, buttons, cancel);
我正在使用system.out.println进行测试,看看它是否为所选按钮获取了正确的int值,但它只显示了两个按钮的0。我不知道为什么。
答案 0 :(得分:2)
不要传入JButton数组,而是传递一个String数组。请注意,您取消和购买ActionListeners也无法工作,也没有必要。而是测试返回到buyNow变量的int数组索引。在if块内(使用equals方法测试),相应地采取行动。
int buyNow = -1;
String[] options = {"Buy", "Cancel"};
buyNow = JOptionPane.showOptionDialog(rootPane, getBuyOrSellPanel ("Buy"), title,
JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, options, cancel);
if ("Buy".equals(options[buyNow])) {
// code for "Buy" option
} else if ("Cancel".equals(options[buyNow])) {
// code for "cancel" option
}