Передача varable от JFrame другому - PullRequest
1 голос
/ 18 апреля 2019

Я хочу передать переменную из JFrame другому, когда я нажимаю кнопку btnCalculeaza.

Вот мой код:

JButton btnCalculeaza = new JButton("Calculeaza");
        btnCalculeaza.addActionListener(new ActionListener() {
            @Override

            public void actionPerformed(ActionEvent e) {
                 int algad = Integer.parseInt(textField.getText());
                 int analiza = Integer.parseInt(textField_1.getText());
                 int be = Integer.parseInt(textField_2.getText());
                 int depcom = Integer.parseInt(textField_3.getText());
                 int engleza1 = Integer.parseInt(textField_4.getText());
                 int engleza2= Integer.parseInt(textField_5.getText());
                 int fizica= Integer.parseInt(textField_6.getText());
                 int grafica= Integer.parseInt(textField_7.getText());
                 int informatica= Integer.parseInt(textField_8.getText());
                 int matematici= Integer.parseInt(textField_9.getText());
                 int programare1= Integer.parseInt(textField_10.getText());
                 int programare2= Integer.parseInt(textField_11.getText());
                 int tpsm= Integer.parseInt(textField_12.getText());
                double nota1;

            nota1=(7*algad+analiza*6.0+7*be+3*depcom+2*engleza1+2*engleza2+fizica*7+grafica*3+informatica*4+matematici*6+programare1*5+programare2*4+tpsm*4)/60;
                System.out.println(nota1);
                new Anul2(nota1).setVisible(true);
                Anul2 anul2 =new Anul2();
                anul2.setVisible(true);
                frame.dispose();
            }
        });

И второй JFrame:

public class Anul2 extends JFrame {

    private double nota1;
    public Anul2(double nota1) {
        this.nota1 = nota1;
    }

    private static final long serialVersionUID = 1L;
    private JPanel contentPane;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Anul2 frame = new Anul2();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Anul2() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 527, 407);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        JLabel lblMediaGeneralaPana = new JLabel("Media generala pana acum:");
        lblMediaGeneralaPana.setBounds(12, 331, 160, 16);
        contentPane.add(lblMediaGeneralaPana);

        JLabel lblNewLabel = new JLabel("");
        lblNewLabel.setText(Double.toString(nota1));
        lblNewLabel.setBounds(171, 331, 56, 16);
        contentPane.add(lblNewLabel);
    }
}

Я хотел бы передать переменную nota1 второй JFrame (называемой Anul2), а затем преобразовать ее в JLabel

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Ваша настоящая проблема заключается в том, что вы смешиваете обязанности в своем коде.

Вы должны полностью отделить обработку данных от своего пользовательского интерфейса.

Значение: у вас есть локальная переменная

nota1=(7*algad+analiza*6.0+7*be+3*depcom+2*engleza1+2*engleza2+fizica*7+grafica*3+informatica*4+matematici*6+programare1*5+programare2*4+tpsm*4)/60;

и ее чрезвычайно сложное вычисление в слушателе действия.Такие вещи там не принадлежат.

Вместо этого у вас должен быть отдельный класс, который only содержит все параметры, необходимые для этого вычисления.И затем, у этого класса, вероятно, есть метод computeNota().

Теперь: в вашем слушателе действий вы создаете объект этого класса, и затем вы можете передать этот объект, например, новому JFRame.

Отсоедините обработку ваших данных от , показывая их пользователю!

0 голосов
/ 18 апреля 2019

Два способа,

  1. Передать ссылку первого JFrame на второй конструктор JFrame.
  2. Используйте метод getFrames () вместе с getDeclaredFields (), чтобы получить значение переменной nota1.
...