-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

Stringを に変換する方法を探していると思いますInteger。それはで行うことができます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 に答える
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 に答える
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 に答える