选择后,JOptionPane自定义JButtons没有关闭

时间:2016-02-02 02:51:49

标签: java swing joptionpane

我有一个财务计划,在选择股票并选择价格和数量之后,我们在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。我不知道为什么。

1 个答案:

答案 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
}