Java method is too complex to analyze

334
04 апреля 2017, 10:18

Работаю в Intellij IDEA делаю desktop приложение. Реализую удаление компонента по кнопке delete через addKeyListener и метод keyPressed внутри метода алгоритм по удалению. Intellij IDEA выдаёт что Java method keyPressed is too complex to analyze. Собственно программа работает, и быстродействие вроде нормальное, но понимаю что это не совсем правильно. Какие есть способы исправить это?

public void keyPressed(KeyEvent e) {
    super.keyPressed(e);
    if (var == 3) {
        if (e.isAltDown() && e.getKeyCode() == KeyEvent.VK_Q) {
            isManual = !isManual;
        }
    }
    if (var == 2)
        switch (e.getKeyCode()) {
            case KeyEvent.VK_BACK_SPACE:
                if (lastline[countline] == 1 && countline > 0) {
                    masX[n - 1] = 0;
                    masX1[n - 1] = 0;
                    masY[n - 1] = 0;
                    masY1[n - 1] = 0;
                    n--;
                    countline--;
                } else {
                    if (lastline[countline] == 2 && countline > 0) {
                        ELmasX[ELn - 1] = 0;
                        ELmasX1[ELn - 1] = 0;
                        ELmasY[ELn - 1] = 0;
                        ELmasY1[ELn - 1] = 0;
                        ELn--;
                        countline--;
                    }
                }
                break;
            case KeyEvent.VK_DELETE:
                if (IfChoice == 1) {
                    for (int u = ElementNumber; u <= Te[ElementType]; u++) {
                        for (int m = 1; m <= KTC[ElementType]; m++) {
                            EKX[ElementType][u][m] = EKX[ElementType][u + 1][m];
                            EKX1[ElementType][u][m] = EKX1[ElementType][u + 1][m];
                            EKY[ElementType][u][m] = EKY[ElementType][u + 1][m];
                            EKY1[ElementType][u][m] = EKY1[ElementType][u + 1][m];
                        }
                        for (int j = 1; j <= ELn; j++) {
                            if (Pr1i[j] == ElementType && Pr1j[j] == u + 1) {
                                Pr1j[j]--;
                            }
                            if (Pr2i[j] == ElementType && Pr2j[j] == u + 1) {
                                Pr2j[j]--;
                            }
                        }
                        if (ElementType == 6 || ElementType == 7 || ElementType == 8) {
                            VarText[0][ElementType][u][1] = VarText[0][ElementType][u + 1][1];
                            VarText[0][ElementType][u][2] = VarText[0][ElementType][u + 1][2];
                        }
                        if (ElementType == 3 || ElementType == 4) {
                            VarText[0][ElementType][u][1] = VarText[0][ElementType][u + 1][1];
                            VarText[0][ElementType][u][2] = VarText[0][ElementType][u + 1][2];
                            VarText[0][ElementType][u][3] = VarText[0][ElementType][u + 1][3];
                        }
                    }
                    for (int i = 1; i <= n; i++) {
                        for (int m = 1; m <= KTC[ElementType]; m++) {
                            if (masX[i] == (Tcx[ElementType][ElementNumber][m] + Tcx1[ElementType][ElementNumber][m]) / 2 && masY[i] == (Tcy[ElementType][ElementNumber][m] + Tcy1[ElementType][ElementNumber][m]) / 2 ||
                                    masX1[i] == (Tcx[ElementType][ElementNumber][m] + Tcx1[ElementType][ElementNumber][m]) / 2 && masY1[i] == (Tcy[ElementType][ElementNumber][m] + Tcy1[ElementType][ElementNumber][m]) / 2) {
                                for (int j = i; j <= n; j++) {
                                    masX[j] = masX[j + 1];
                                    masX1[j] = masX1[j + 1];
                                    masY[j] = masY[j + 1];
                                    masY1[j] = masY1[j + 1];
                                    Pr2i[j] = Pr2i[j + 1];
                                    Pr2j[j] = Pr2j[j + 1];
                                    Pr2k[j] = Pr2k[j + 1];
                                    Pr1i[j] = Pr1i[j + 1];
                                    Pr1j[j] = Pr1j[j + 1];
                                    Pr1k[j] = Pr1k[j + 1];
                                }
                                n--;
                            }
                        }
                    }
                    Te[ElementType]--;
                    IfChoice = 0;
                }
                if (IfChoice == 2) {
                    for (int u = ElementNumber; u < ELTe[ElementType]; u++) {
                        for (int m = 1; m <= ELKTC[ElementType]; m++) {
                            ELEKX[ElementType][u][m] = ELEKX[ElementType][u + 1][m];
                            ELEKX1[ElementType][u][m] = ELEKX1[ElementType][u + 1][m];
                            ELEKY[ElementType][u][m] = ELEKY[ElementType][u + 1][m];
                            ELEKY1[ElementType][u][m] = ELEKY1[ElementType][u + 1][m];
                            for (int j = 1; j <= ELn; j++) {
                                if (ELPr1i[j] == ElementType && ELPr1j[j] == u + 1) {
                                    ELPr1j[j]--;
                                }
                                if (ELPr2i[j] == ElementType && ELPr2j[j] == u + 1) {
                                    ELPr2j[j]--;
                                }
                            }
                        }
                        VarText[1][ElementType][u][1] = VarText[1][ElementType][u + 1][1];
                    }
                    ELTe[ElementType]--;
                    IfChoice = 0;
                    for (int m = 1; m <= ELKTC[ElementType]; m++) {
                        for (int i = 1; i < ELn; i++) {
                            if (ELmasX[i] == (ELTcx[ElementType][ElementNumber][m] + ELTcx1[ElementType][ElementNumber][m]) / 2 && ELmasY[i] == (ELTcy[ElementType][ElementNumber][m] + ELTcy1[ElementType][ElementNumber][m]) / 2 ||
                                    ELmasX1[i] == (ELTcx[ElementType][ElementNumber][m] + ELTcx1[ElementType][ElementNumber][m]) / 2 && ELmasY1[i] == (ELTcy[ElementType][ElementNumber][m] + ELTcy1[ElementType][ElementNumber][m]) / 2) {
                                for (int j = i; j < ELn; j++) {
                                    ELmasX[j] = ELmasX[j + 1];
                                    ELmasX1[j] = ELmasX1[j + 1];
                                    ELmasY[j] = ELmasY[j + 1];
                                    ELmasY1[j] = ELmasY1[j + 1];
                                    ELPr2i[j] = ELPr2i[j + 1];
                                    ELPr2j[j] = ELPr2j[j + 1];
                                    ELPr2k[j] = ELPr2k[j + 1];
                                    ELPr1i[j] = ELPr1i[j + 1];
                                    ELPr1j[j] = ELPr1j[j + 1];
                                    ELPr1k[j] = ELPr1k[j + 1];
                                }
                                ELn--;
                            }
                        }
                    }
                }
                if (IfChoiceLine == 1) {
                    if (n > 1) {
                        for (int i = LineNumber; i <= n; i++) {
                            masX[i] = masX[i + 1];
                            masX1[i] = masX1[i + 1];
                            masY[i] = masY[i + 1];
                            masY1[i] = masY1[i + 1];
                            Pr2i[i] = Pr2i[i + 1];
                            Pr2j[i] = Pr2j[i + 1];
                            Pr2k[i] = Pr2k[i + 1];
                            Pr1i[i] = Pr1i[i + 1];
                            Pr1j[i] = Pr1j[i + 1];
                            Pr1k[i] = Pr1k[i + 1];
                        }
                        n--;
                        IfChoiceLine = 0;
                    }
                }
                if (IfChoiceLine == 2) {
                    for (int i = LineNumber; i <= ELn; i++) {
                        ELmasX[i] = ELmasX[i + 1];
                        ELmasX1[i] = ELmasX1[i + 1];
                        ELmasY[i] = ELmasY[i + 1];
                        ELmasY1[i] = ELmasY1[i + 1];
                        ELPr2i[i] = ELPr2i[i + 1];
                        ELPr2j[i] = ELPr2j[i + 1];
                        ELPr2k[i] = ELPr2k[i + 1];
                        ELPr1i[i] = ELPr1i[i + 1];
                        ELPr1j[i] = ELPr1j[i + 1];
                        ELPr1k[i] = ELPr1k[i + 1];
                    }
                    ELn--;
                    IfChoiceLine = 0;
                }
                break;
        }
}
READ ALSO
Что делает метод notifyItemChanged?

Что делает метод notifyItemChanged?

Что делает метод notifyItemChange() у класса RecyclerViewAdapter?

320
Java элементы дерева JTree

Java элементы дерева JTree

Разобрал стандартные примеры с JTreeСобственно возник вопрос, возможно ли заменить элементы JTree на другой компонент, что бы при разворачивании,...

321
SQLite проверить существование строки в базе данных

SQLite проверить существование строки в базе данных

Как проверить присутствие строки в базе данных SQLite и если есть то обновлять какое то значение в строке?

272