Есть ли способ минимизировать линии для этого
В любом случае, чтобы минимизировать количество строк кода для достижения одной и той же вещи
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