Как установить цвет JLabel с помощью Java?

Я буду создавать несколько компонентов Jlabel одним кликом JButton. Я знаю, как создать метку и установить текст внутри, но я хочу, чтобы эта метка имела цвет.

Я знаю, как изменить цвет метки только в том случае, если у нее есть имя, но важной частью моей программы является то, что когда я объявляю метки, у меня нет для них имен, как показано в коде ниже:

newPanel.add(new JLabel("jlabel text"), g);

Как установить цвет этикетки?

Что вы имеете в виду I don't have names. Создайте локальную переменную для метки и выполните над ней все необходимые действия, прежде чем добавить ее на панель.

Coderino Javarino 21.01.2019 17:46

Но смогу ли я со временем добавить несколько jLabels разных цветов, используя одно и то же имя?

Anon 21.01.2019 17:47

@Anon, если я правильно вас понял, вам, вероятно, нужна функция, которая принимает и цвет, и текст, и возвращает новую метку jlabel, которую вы можете передать add в той же строке.

Ferrybig 21.01.2019 17:50

@Anon Локальные переменные существуют только на время блока (по сути, от ближайшего { над ним до соответствующего }). «То же самое имя» — это всего лишь временный псевдоним, и оно не обязательно должно ссылаться на один и тот же объект между несколькими вызовами.

Coderino Javarino 21.01.2019 17:52

@ Анон Возможно, вы слишком рано вскочили в качели, я предлагаю вам еще раз прочитать об основах.

Coderino Javarino 21.01.2019 17:53

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

Anon 21.01.2019 18:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
6
81
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

I don't have names for them as shown in the code below:

newPanel.add(new JLabel("jlabel text"), g);

Итак, дайте ярлыку имя:

JLabel label = new JLabel("label text");
label.setOpaque( true );
label.setBackground( Color.RED );
newPanel.add(label, g);
Ответ принят как подходящий
yourLabel.setForeground(new java.awt.Color(r,g,b);

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

JLabel myLabel = new JLabel("jlabel text");
myLabel.setForeground(new java.awt.Color.RED);
newPanel.add(myLabel);

Теперь поместите этот код в функцию, например, в обработчик событий для вашей кнопки. Каждый раз, когда вы нажимаете кнопку, создается новый JLabel. Имя myLabel относится только к текущему создаваемому. Так что да, вы можете повторно использовать одно и то же имя для ссылки на другой объект JLabel. В данный момент имя может относиться только к одному JLabel за раз.

Другие вопросы по теме