Простая домашняя помощь Java, нужна помощь с графическим интерфейсом - PullRequest
0 голосов
/ 02 февраля 2011

Мне нужно создать этот класс с именем testscores

Написать класс с именем TestScores.Конструктор класса должен принимать массив результатов тестов в качестве аргумента.В классе должен быть метод, который возвращает среднее значение результатов теста.Если какой-либо тестовый результат в массиве отрицательный или больше 100, класс должен выбросить недопустимое значение ArgumentExecpetion.Продемонстрируйте класс в программе.

Это моя программа

.lang.IllegalArgumentException;

/**
 * class TestScores
 * @author george beazer
 * 
 */
public class TestScores {

    double[] scoresArray;
    double average;

    /**
     * Constructor
     * @param double[] scores
     */
    public TestScores(double[] scores) {

        this.scoresArray = new double[scores.length];

        try {
            for(int i = 0; i < scores.length ; i++) {
                this.scoresArray[i] = scores[i];
                if((this.scoresArray[i] < 0) || (this.scoresArray[i] > 100 )) 
                    throw new IllegalArgumentException(Double.toString(this.scoresArray[i]));
            }
            this.calcAverage();
        }
        catch(IllegalArgumentException e) {
            System.out.println("The Array contains Illegal values! " +
                    e.getMessage() + " is Less than 0 or Greater than 100.");           
        }
    }

    /**
     * private method to calculate the average of the array
     */
    void calcAverage() {
        int count = 0;
        double sum = 0;

        for(int i = 0; i < this.scoresArray.length; i++) {
            sum = sum + this.scoresArray[i];
            count++;
        }

        this.average = sum / count;
    }

    /**
     * accessor method for average
     * @return double average;
     */
    public double getAverage() {
        return this.average;
    }


}

Я пытаюсь написать код графического интерфейса, который позволяет пользователю вводить желаемое количество тестов.Например, пользователь сможет ввести три результата теста, но передумает и захочет ввести шесть результатов теста.Из того, что я знаю о графическом интерфейсе, я должен заранее определить количество тестов.Например, я создаю три объекта для результатов тестов, но если пользователь хочет поставить четвертый результат теста, он не может.

JButton test-scores1 = new JButton ("Button1");
JButton test-scores1 = new JButton ("Button2");
JButton test-scores1 = new JButton ("Button3");

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Вы можете использовать коллекцию JButtons, например ArrayList, если вы хотите хранить ссылку на группу JButton, но не знаете, сколько вам понадобится во время компиляции. Вы можете добавить кнопки в JPanel, который использует, скажем, GridLayout и поместить их в JScrollPane, если вы хотите отобразить группу.

В качестве альтернативы, и я думаю, что желательно, JTable будет чище, чем куча JButton. Таким образом, вы можете иметь сетку, которая даже содержит 100 строк, а затем пользователь может заполнить данные столько раз, сколько нужно. Чтобы узнать, как кодировать Swing JTable, пожалуйста, ознакомьтесь с руководством по этому вопросу, которое вы можете найти здесь: Как использовать таблицы

Также относительно использования GUI Builder - я советую против этого. С одной стороны, это может помешать вам изучать Swing, а с другой вы рискуете потерять некоторую гибкость в окончательном дизайне графического интерфейса. Также для сложных графических интерфейсов их иногда сложнее использовать, чем созданный вручную код Swing.

1 голос
/ 02 февраля 2011

Необходимость нажимать кнопки для выбора количества результатов теста кажется странным пользовательским интерфейсом.Вместо этого используйте JSpinner или JComboBox, чтобы позволить пользователю выбрать количество баллов.

0 голосов
/ 02 февраля 2011

, если графический интерфейс является второстепенным по отношению к вашему назначению, и вы просто хотите произвести впечатление на всех, я предлагаю использовать графический редактор для создания вашего пользовательского интерфейса:

http://www.eclipse.org/vep/

В то время, когда я писал свинг-приложения, я использовал для этого графический редактор. Конечно, код немного более подробный, чем пользовательский, но экономит ваше время.

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