Как отобразить таблицу в J-кадре по кнопке - PullRequest
0 голосов
/ 15 мая 2019

Я решил логическую головоломку, реализовав различные логические ограничения. Я смоделировал эту загадку: https://github.com/.../.../java/org/jacop/examples/fd/Zebra.java Все работает. Результат отображается для меня в консоли, как и остальные параметры (узлы, решения, WrongDecisions и т. Д.). Результат представляет собой массив, а параметры - простое отображение функции (например, System.out.print (search.getNodes () + "\ t");). Проблема в том, что я не знаю, как отобразить все это в текстовом поле моего JFrame с помощью созданной мной кнопки.

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

//this is part of the code from ClpCombinatorics.java that is in core catalog.


...



 IntVar color[] = new IntVar[5];
        IntVar nationality[] = new IntVar[5];
        IntVar port[] = new IntVar[5];
        IntVar carries[] = new IntVar[5];
        IntVar leaves[] = new IntVar[5];

        for (int i = 0; i < 5; i++) {
            color[i] = new IntVar(store, colorChimney[i], 1, 5);
            port[i] = new IntVar(store, portNames[i], 1, 5);
            carries[i] = new IntVar(store, carriesNames[i], 1, 5);
            nationality[i] = new IntVar(store, nationalityNames[i], 1, 5);
            leaves[i] = new IntVar(store, leavesHours[i], 1, 5);
            vars.add(color[i]);
            vars.add(nationality[i]);
            vars.add(port[i]);
            vars.add(carries[i]);
            vars.add(leaves[i]);
        }

        store.impose(new Alldifferent(color));
        store.impose(new Alldifferent(port));
        store.impose(new Alldifferent(carries));
        store.impose(new Alldifferent(nationality));
        store.impose(new Alldifferent(leaves));

        //S1
        store.impose(new XeqY(nationality[igreek], leaves[isix]));
        store.impose(new XeqY(nationality[igreek], carries[icoffe]));


...


public boolean searchMostConstrainedStatic() {

        Search<IntVar> search = new DepthFirstSearch<IntVar>();

        SelectChoicePoint<IntVar> select =
            new SimpleSelect<>(vars.toArray(new IntVar[1]), new MostConstrainedStatic<>(), new IndomainMin<>());

        boolean result2 = search.labeling(store, select);

        System.out.println();
        System.out.print(search.getNodes() + "\t");
        System.out.print(search.getDecisions() + "\t");
        System.out.print(search.getWrongDecisions() + "\t");
        System.out.print(search.getBacktracks() + "\t");
        System.out.print(search.getMaximumDepth() + "\t");

        if (!result2)
            System.out.println("**** No Solution ****");

        return result2;


    }

    private SelectChoicePoint<IntVar> solution;

    //@Override
    public SelectChoicePoint<IntVar> getSolution(){
        return solution;
    }

Это работает - разгадывает загадку, но я не знаю, как ее отобразить, нажав кнопку «Решить» рядом с моей J-рамкой, как я уже упоминал ранее.

...