Есть ли способ минимизировать линии для этого

В любом случае, чтобы минимизировать количество строк кода для достижения одной и той же вещи

    L1.setFont(new Font("Serief", Font.BOLD, 24));
    L2.setFont(new Font("Serief", Font.BOLD, 24));
    L3.setFont(new Font("Serief", Font.BOLD, 24));
    L4.setFont(new Font("Serief", Font.BOLD, 24));
    L5.setFont(new Font("Serief", Font.BOLD, 24));
    L6.setFont(new Font("Serief", Font.BOLD, 24));
    L7.setFont(new Font("Serief", Font.BOLD, 24));
    L8.setFont(new Font("Serief", Font.BOLD, 24));

Ответ 1

Вы могли бы сделать

Font serif = new Font("Serif ", Font.BOLD, 24);
for (JLabel l : new JLabel[] { L1, L2, L3, L4, L5, L6, L7, L8 })
    l.setFont(serif);

В Java 8 вы можете написать

Stream.of(L1, L2, L3, L4, L5, L6, L7, L8).forEach(l -> l.setFont(serif));

Ответ 2

Другие ответы правильны, но они берут вашу проблему дизайна как данность. И просто сказал: я думаю, что это неправильно.

Точка: как только вы начинаете именовать переменные, такие как L1, L2, L3,... вы делаете что-то очень неправильно. Особенно, когда ваша следующая идея - написать конкретный код, который имеет дело с L1, и код, который имеет дело с L2; и так далее. Возможно, другие ответы помогут вам исправить эту часть вашего кода. Но рано или поздно у вас будет множество недостающих кодов; все они имеют дело с этими парнями Lx по-своему. Или, может быть, даже не эти ярлыки в этой программе. но какой-то другой фрагмент кода, в котором вы начинаете с той же ошибки, что и организация ваших элементов (UI) неэффективно.

Решение real здесь: вы должны использовать какой-то механизм сбора; либо List; или, может быть, простой старый массив. Потому что тогда вы можете итератировать эту коллекцию и иметь ровно one строку кода для установки всех элементов в этой коллекции таким же образом.

Или наоборот: вы запрашиваете панель, содержащую все метки для своих элементов; и если элемент соответствует определенному условию, то вы обновляете его свойства так, как вам нужно. Если вы будете следовать этому пути, вам может даже не потребоваться ссылки на ваши элементы в вашем "собственном коде"; вы просто используете средства, которые уже существуют; и может быть таким же простым, как .

Что я говорю: все хорошие идеи в этих других решениях, но я думаю, что они идут в неправильном направлении. Они пытаются использовать хорошие идеи, чтобы исправить сломанную оценку. Чтобы следить за темой, которая сегодня довольно известна, считайте такие элементы пользовательского интерфейса крупным рогатым скотом, а не домашними животными. Смысл: это просто "цифры" для вас, которые вы организовываете, чтобы они могли быть доступны в целом в эффективном (по сравнению с домашним животным, которое рассматривается как индивидуальное лицо, имеющее имя и считающееся "единым сущностью" ) большей частью время).

Но просто добавьте мою короткую версию; небольшое изменение решения Питера:

for (JLabel l : Arrays.asList( L1, L2, L3, L4, L5, L6, L7, L8 ))

тоже будет работать.

Ответ 3

Выбрали его до... 4 строки; -)

setFont(new Font("Serief", Font.BOLD, 24), L1, L2, L3, L4, L5, L6, L7, L8);

private void setFont(Font font, Object... objects){
    for(Object object : objects){
        object.setFont(font);
    }
}

Как указано в комментариях Халка, вы должны заменить Object тем классом, который вы вызываете setFont.

Помните, что всякий раз, когда вы видите дубликат кода, вы часто можете заменить его вызовом метода. Вот еще информация о том, почему дублирующий код плохо: https://en.wikipedia.org/wiki/Duplicate_code

Ответ 4

Да создайте метод setFont (Object... values) и передайте любое количество объектов, на которых вам нужно установить шрифт. Ниже приведен пример объекта JLabel.

void setFont(JLabel... jLabels){
    for(JLabel jLabel : jLabels){
        jLabel.setFont(new Font("Serif", Font.BOLD, 24));
    }
}

Вы можете называть его как

setFont(L1,L2,L3,L4); //any number of arguments