SwingConstants имеет одинаковое значение int для Bottom и East? - PullRequest
0 голосов
/ 18 ноября 2018

Пытаясь получить горизонтальное выравнивание данного JLabel, я заметил, что SwingConstants.TOP имеет то же числовое значение типа int, что и SwingConstants.NORTH (оба равны 1), но SwingConstants.BOTTOM имеет то же значение int SwingConstants.EAST (оба 3) вместо SwingConstants.SOUTH (5)!

    if (c instanceof JLabel) {
        JLabel tempLabel = (JLabel) c;
        //for meaning of values see javax.swing.SwingConstants.
        switch (tempLabel.getVerticalAlignment()) {
            case 0:
                output = VERTICAL_ALIGNMENT.CENTER;
                break;
            case 1:
                output = VERTICAL_ALIGNMENT.TOP;
                break;
            case 3: //Bottom but also east instead of south!
                output = VERTICAL_ALIGNMENT.BOTTOM;
                break;
            default:
            //use default value setting
        }
    }

Я хотел сделать случаи для всех более низких вертикальных выравниваний, чтобы (будь то BOTTOM, SOUTH, SOUTH_EAST, SOUTH_WEST) возвращать VERTICAL_ALIGNMENT.BOTTOM - но значения int этих констант не имеют ожидаемой согласованности.Как я могу решить это лучше всего, и, возможно, также, почему они определены таким странным образом?

...