Пытаясь получить горизонтальное выравнивание данного 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 этих констант не имеют ожидаемой согласованности.Как я могу решить это лучше всего, и, возможно, также, почему они определены таким странным образом?