Как получить входные данные из JTextField из других панелей - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в использовании JTextFields и мне было любопытно, как получить информацию от 3 различных панелей. Панели будут брать цифры из входных данных и усреднять баллы. Для этого я хочу получить доступ ко всем 3 панелям, чтобы сделать математику. У меня есть панель для оценки трех разных людей, которую я хочу усреднить. Поэтому я хотел бы получить mattsTotalScore и добавить его с помощью timsTotalScore и BensTotalScore и сделать так, чтобы среднее значение появлялось после кнопки на четвертой панели.

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

public class MattPanel extends JPanel {

    public MattPanel(){
        Dimension size = getPreferredSize();
        size.width = 250;
        setPreferredSize(size);
        setBorder(BorderFactory.createTitledBorder("Matt's Scores"));

        JLabel memMatt = new JLabel("MEMORABILITY :");
        JTextField textMemMattPane = new JTextField(10);

        JLabel comMatt = new JLabel("COMPOSITION :");
        JTextField textComMattPane = new JTextField(10);

        JLabel mixMatt = new JLabel("MIX/MASTER :");
        JTextField textMixMattPane = new JTextField(10);

        JLabel soundMatt = new JLabel("SOUND DESIGN :");
        JTextField textSoundMattPane = new JTextField(10);

        JLabel enjoyMatt = new JLabel("ENJOYMENT :");
        JTextField textEnjoyMattPane = new JTextField(10);

        setLayout(new GridBagLayout());

        GridBagConstraints gc = new GridBagConstraints();

        ///First Column ///////////////////////
        gc.anchor = GridBagConstraints.LINE_END;
        gc.weightx = 0.5; gc.weighty = 0.5;
        gc.gridx = 0; gc.gridy = 0;
        add(memMatt, gc);

        gc.gridx = 0; gc.gridy = 1;
        add(comMatt, gc);

        gc.gridx = 0; gc.gridy = 2;
        add(mixMatt, gc);

        gc.gridx = 0; gc.gridy = 3;
        add(soundMatt, gc);

        gc.gridx = 0; gc.gridy = 4;
        add(enjoyMatt, gc);

        //Second Column //////////////////////
        gc.anchor = GridBagConstraints.LINE_START;
        gc.gridx = 1; gc.gridy = 0;
        add(textMemMattPane,gc);

        gc.gridx = 1; gc.gridy = 1;
        add(textComMattPane,gc);

        gc.gridx = 1; gc.gridy = 2;
        add(textMixMattPane,gc);

        gc.gridx = 1; gc.gridy = 3;
        add(textSoundMattPane,gc);

        gc.gridx = 1; gc.gridy = 4;
        add(textEnjoyMattPane,gc);
    }
}

1 Ответ

0 голосов
/ 15 октября 2019

Вы можете попробовать использовать метод getComponents() из JPanel для получения всех компонентов, хотя вам придется как-то идентифицировать TextFields, например:

MattPanel panel = new MattPanel();
int sum = 0;
int nr = 0;
for(Component comp : panel.getComponents()){
    if(comp instanceof JTextField){ 
        String text = ((JTextField)comp).getText();
        sum += Integer.parseInt(text);
        nr ++;
    }
}
double avg = sum/nr;
...