Действительно ли это стоит усилия иметь функцию, которая возвращает инверсию другой функции?

Используйте GridLayout на imgPanel и добавьте метки с помощью петли. Обязательно центрируйте текст метки, используя SwingConstants.CENTER.

Все метки будут на равном расстоянии друг от друга, и вам не нужно устанавливать какие-либо вставки или поля.

List<String> labels = Arrays.asList("STD", "AIRLINE", "DESTINATION", "FLIGHT", "GATE", "STATUS");
imgPanel.setLayout(new GridLayout(1, labels.size())); // 1 row, 6 columns
labels.stream().forEach(s -> {
    JLabel label = new JLabel(s, SwingConstants.CENTER); // centered label text
    label.setFont(new Font("Century Gothic", Font.BOLD, 28));
    label.setForeground(new Color(255, 255, 255));
    imgPanel.add(label);
});

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

imgPanel.setLayout(new GridLayout(1, 6)); // Six labels tiled horizontally

И не забудьте центрировать текст вашего ярлыка.

schedHd = new JLabel("STD", SwingConstants.CENTER);
airlineHd = new JLabel("AIRLINE", SwingConstants.CENTER);
// etc...
5
задан chills42 23 April 2009 в 15:54
поделиться

7 ответов

I vastly prefer A to B. "!" is a programming idiom that should be understood by all.

20
ответ дан 18 December 2019 в 05:17
поделиться

Я голосую «А» , безусловно .

Дополнительное бремя обслуживания, связанное с выполнением этой функции для каждой и любой логической функции возврата, не стоит этого по сравнению с понятным и вполне читабельным «!», И фактически я считаю, что «B» на самом деле меньше ] читабельно, так как очень легко пропустить «Нет» в середине имени.

8
ответ дан 18 December 2019 в 05:17
поделиться

Если ! HasValue (y) и HasNoValue (y) гарантированно будут логически эквивалентны во всем входном диапазоне y , тогда я бы предпочел ! HasValue (y) .

Я бы не хотел, чтобы даже имел функцию с именем HasNoValue (y) , потому что это неизбежно кто-то напишет ! HasNoValue (y) .

12
ответ дан 18 December 2019 в 05:17
поделиться

Просто из-за того, что у вас меньше строк кода и потому что ваша функция возвращает логическое значение, я бы сказал, что нужно использовать метод А. Если вам нужно беспокоиться о читабельности, вы всегда можете попробовать :

if ( HasValue(x) && !(HasValue(y)) )
1
ответ дан 18 December 2019 в 05:17
поделиться

Я знаю, что останусь наедине с этим мнением, и если бы я столкнулся с этим выбором в совместном проекте, я бы, конечно, согласился с А, поскольку совершенно очевидно, что это правильно что нужно сделать, но я должен сказать, что я ценю многословие варианта B. Слова просто бесконечно легче читать и понимать, чем символику, даже если это что-то столь же приземленное, как наш любимый восклицательный знак

Особенно сейчас, когда у IDE гораздо лучше, чем раньше, интеллектуальный смысл, я обычно склоняюсь к гораздо большему многословию, чем раньше со всеми именами. 9 раз из 10, читаемость превосходит небольшие различия в производительности, руки вниз.

2
ответ дан 18 December 2019 в 05:17
поделиться

Я бы сказал, вариант А более понятен, вы точно знаете, что это значит.

0
ответ дан 18 December 2019 в 05:17
поделиться

Я бы выбрал вариант А, но это только я.

0
ответ дан 18 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: