JComboBox, как вычислить два целых числа из двух JComboBox и получить результат в поле JText при нажатии кнопки JButton - PullRequest
0 голосов
/ 08 октября 2011

У меня есть 2 JComboBox, состоящий из чисел combobox1= 1 to 5 и c ombobox2= 1 to 6.

и когда я нажимаю на JButton, я хочу, чтобы два выбранных номера были добавлены и отображены на Textfield.

У меня уже есть полный код, кроме расчета и того, как получить результат в textfield.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class exer1 extends JFrame{

    JFrame form = new JFrame ("haay");
    JButton btn = new JButton ("Compute");
    JTextField txt = new JTextField (10); 
    JComboBox cb1 = new JComboBox();
    JComboBox cb2 = new JComboBox();


public exer1(){

    form.getContentPane().setLayout(null);
    form.setSize (500,550);

    form.getContentPane().add(txt);
    form.getContentPane().add(btn);
    form.getContentPane().add(cb1);
    form.getContentPane().add(cb2);

    cb1.addItem(new Integer(1));
    cb1.addItem(new Integer(2));
    cb1.addItem(new Integer(3));
    cb1.addItem(new Integer(4));
    cb1.addItem(new Integer(5));
    cb2.addItem(new Integer(1));
    cb2.addItem(new Integer(2));
    cb2.addItem(new Integer(3));
    cb2.addItem(new Integer(4));
    cb2.addItem(new Integer(5));
    cb2.addItem(new Integer(6));

    txt.setBounds(150,90,100,30);
    btn.setBounds(40,170,100,40);
    cb1.setBounds(190,140,50,30);
    cb2.setBounds(190,190,50,30);

    btn.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent e){


            }
        });



  form.show();

}




    public static void main (String args []){
        exer1 xx = new exer1();

    }

}

Пожалуйста, помогите.

Ответы [ 3 ]

4 голосов
/ 09 октября 2011

Предоставленное sscce явно домашнее задание, но цель упражнения не так ясна. Стоит отметить несколько вещей.

  1. Графический интерфейс должен быть построен в потоке диспетчеризации событий .

  2. По соглашению имена классов начинаются с заглавной буквы.

  3. Для удобства чтения должна учитываться длительная инициализация.

  4. Объекты, добавленные к каждому JComboBox, являются экземплярами класса Integer, которые моделируют подмножество математических целых чисел. Обратите внимание, почему valueOf() "обычно следует использовать вместо конструктора."

  5. Нет необходимости преобразовывать что-либо в String, пока не пришло время обновить дисплей в actionPerformed(). Поскольку getSelectedItem() возвращает значение типа Object, результат должен быть приведен к Integer; это совершенно безопасно в контексте локально построенных данных.

  6. Как только значения Integer будут восстановлены, легко получить сумму в виде значения int.

  7. Окончательное преобразование sum в String оставлено в качестве упражнения. Подсказка: String имеет подходящий метод, название которого теперь может показаться знакомым.

  8. Никогда не рано подружиться с Визуальное руководство для менеджеров по макету .

image

Пересмотренный пример:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Exercise1 extends JFrame {

    JFrame form = new JFrame("Exercise1");
    JButton btn = new JButton("Compute");
    JTextField txt = new JTextField(10);
    JComboBox<Integer> cb1 = new JComboBox<>();
    JComboBox<Integer> cb2 = new JComboBox<>();

    public Exercise1() {
        form.setLayout(new GridLayout(0, 1));
        form.add(txt);
        form.add(btn);
        form.add(cb1);
        form.add(cb2);
        for (int i = 1; i <= 5; i++) {
            cb1.addItem(Integer.valueOf(i));
            cb2.addItem(Integer.valueOf(i));
        }
        cb2.addItem(new Integer(6));
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Integer v1 = (Integer) cb1.getSelectedItem();
                Integer v2 = (Integer) cb2.getSelectedItem();
                int sum = v1.intValue() + v2.intValue();
                txt.setText("42"); // really should convert sum to a String
            }
        });

        form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        form.pack();
        form.setVisible(true);
    }

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                Exercise1 exercise1 = new Exercise1();
            }
        });
    }
}

Для справки, в Java 7 добавлен ComboBoxModel<E> для улучшенного типа, хотя getSelectedItem() остается обратно совместимым.

3 голосов
/ 09 октября 2011

Я вроде как переписал весь скрипт (извините за неудобства) ...

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class exer1 extends JFrame implements ActionListener {
    JPanel row1 = new JPanel();
    JLabel first = new JLabel("Select the first number:", JLabel.RIGHT);
    JComboBox fNum = new JComboBox();
    JPanel row2 = new JPanel();
    JLabel second = new JLabel("Select the second number:", JLabel.RIGHT);
    JComboBox sNum = new JComboBox();
    JPanel row3 = new JPanel();
    JButton comp = new JButton("Compute");
    JTextField total = new JTextField(5);

    public exer1() {
        super("Calculator");
        row1.add(first);
        fNum.addItem("1");
        fNum.addItem("2");
        fNum.addItem("3");
        fNum.addItem("4");
        fNum.addItem("5");
        fNum.addItem("6");
        row1.add(fNum);
        add(row1);
        row2.add(second);
        sNum.addItem("1");
        sNum.addItem("2");
        sNum.addItem("3");
        sNum.addItem("4");
        sNum.addItem("5");
        sNum.addItem("6");
        row2.add(sNum);
        add(row2);
        comp.addActionListener(this);
        row3.add(comp);
        total.setEditable(false);
        row3.add(total);
        add(row3);
        setLayout(new FlowLayout());
        setSize(500, 550);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        int num1 = Integer.parseInt(fNum.getSelectedItem().toString());
        int num2 = Integer.parseInt(sNum.getSelectedItem().toString());
        total.setText("" + (num1 + num2));
    }

    public static void main(String[] args) {
        exer1 xx = new exer1();
    }
}
0 голосов
/ 08 октября 2011

используйте form.setVisible(true);

затем:

    btn.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            int cb1Int = Integer.parseInt(cb1.getSelectedItem().toString());
            int cb2Int = Integer.parseInt(cb2.getSelectedItem().toString());
            txt.setText(String.valueOf(cb1Int + cb2Int));
        }
    });

Удачи с домашней работой.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...