-1

我目前正在学习 java 并坚持使用 JComboBox。我有一种感觉,我正在尝试并在 4 小时内撞墙。

我试图让用户从 ComboBox 中选择 1-10。如何获得组合框的值?组合框的值相当于数量。

所以我有另一个价值,可能是 10 美元。如果用户选择数量 2。

我想获得用户选择的价值,然后取 10 美元的价值并将其乘以 2。

20 美元的结果将显示在 JTextField 上。

请帮忙 :(

public class Panel extends JPanel {

    public Panel(){
        JPanel test = new JPanel(new GridBagLayout());

        String[] quantities1 = {"0","1","2","3","4","5","6","7","8","9","10"};
        JComboBox quantitiesCB = new JComboBox(quantities1);
        quantitiesCB.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent e){
                        JComboBox combo = (JComboBox)e.getSource();
                        String currentQuantity = (String)combo.getSelectedItem();
                    }
                }            
        );

        JTextField result = new JTextField();

        setLayout(new GridBagLayout());
        setPreferredSize(new Dimension(640,480));
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 0.1;
        gbc.weighty = 0.1;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.anchor = GridBagConstraints.NORTH;
        add(quantitiesCB, gbc);
    } 
}
4

3 回答 3

3

只是几个变化:

public class Panel extends JPanel {

    public Panel(){
        JPanel test = new JPanel(new GridBagLayout());
        String value = "10";
        final JTextField result = new JTextField();

        String[] quantities1 = {"0","1","2","3","4","5","6","7","8","9","10"};
        JComboBox quantitiesCB = new JComboBox(quantities1);
        quantitiesCB.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent e){
                        JComboBox combo = (JComboBox)e.getSource();
                        String currentQuantity = (String)combo.getSelectedItem();
                        int value1 = Integer.valueOf(value);
                        int value2 = Integer.valueOf(currentQuantity);

                        String resultText = String.valueOf(value1*value2);
                        result.setText("$" + resultText);
                    }
                }            
        );

        setLayout(new GridBagLayout());
        setPreferredSize(new Dimension(640,480));
        GridBagConstraints gbc = new GridBagConstraints();

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.weightx = 0.1;
        gbc.weighty = 0.1;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.anchor = GridBagConstraints.NORTH;
        add(quantitiesCB, gbc);
    } 
}
于 2013-05-02T13:57:38.430 回答
3

我猜您正在寻找一种将 a 转换StringInteger. 这可以用Integer.valueOf.

下面是一个非常小的/基本的演示代码(但我不知道你在寻找什么):

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class Panel extends JPanel {

    private JTextField result;
    private JTextField amount;

    public Panel() {
        setLayout(new GridBagLayout());
        String[] quantities1 = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
        JLabel dollar = new JLabel("$");
        amount = new JTextField(3);
        JComboBox quantitiesCB = new JComboBox(quantities1);
        quantitiesCB.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBox combo = (JComboBox) e.getSource();
                String currentQuantity = (String) combo.getSelectedItem();
                int a;
                int q;
                try {
                    a = Integer.valueOf(amount.getText());
                    q = Integer.valueOf(currentQuantity);
                    result.setText("$" + String.valueOf(a * q));
                } catch (NumberFormatException e1) {
                    e1.printStackTrace();
                    // Some invalid number
                }
            }
        });
        JLabel equal = new JLabel("=");
        result = new JTextField(5);
        JLabel quantity = new JLabel("Quantity:");
        GridBagConstraints gbc = new GridBagConstraints();
        add(dollar, gbc);
        add(amount, gbc);
        add(quantity, gbc);
        add(quantitiesCB, gbc);
        add(equal, gbc);
        add(result, gbc);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(new Panel());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
于 2013-05-02T13:55:51.540 回答
1

您需要制作固定价格和JTextField final, 以便将它们传递给您的事件处理程序。

此外,为什么要使用String整数?您可以使用:

final int FixedPrice = 10;
final JTextField result = new JTextField();
int[] quantities1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
JComboBox quantitiesCB = new JComboBox(quantities1);
quantitiesCB.addActionListener(
    new ActionListener(){
        public void actionPerformed(ActionEvent e){
            JComboBox combo = (JComboBox)e.getSource();
            int currentQuantity = (Integer)combo.getSelectedItem();
            result.setText("$" + String.valueOf(currentQuantity * FixedPrice));
        }
    }            
);
于 2013-05-02T13:59:55.493 回答