JLabel непрозрачный и альфа

#java #swing #jlabel

Вопрос:

В JPanel у меня есть несколько JLabels, созданных таким образом:

 ...
Random rand = new Random();
Color col = new Color(rand.nextFloat(),
rand.nextFloat(),
rand.nextFloat(),
rand.nextFloat());
Color playColor= new Color(col.getRed(), col.getGreen(), col.getBlue(), col.getAlpha());
sqr.setOpaque(true);
sqr.setBackground(playColor);
sqr.setLayout(null);
...
 

Когда я нажимаю на любую метку JL (mouseClicked(MouseEvent e)) Я могу получить информацию об этом в JOptionPane. В той же JOptionPane у меня есть флажок для пометки выбранной метки (установите флажок-> setBorder(BorderFactory.createLineBorder(Цвет.красный)), снимите флажок ->> setBorder(null). Когда я проверяю, а затем снимаю флажок JLabel, происходит что-то вроде этого:

введите описание изображения здесь

Как избавиться от этих флажков с этикеток?

правка: флажки на этикетках-это только картинки, а не настоящие флажки. Может быть, эта фотография поможет: введите описание изображения здесь

Этот квадрат с красной рамкой теперь помечен пометкой chechBox на JOptionPane. И этот слева (с изображением флажка на нем) был проверен ранее. Я не знаю, как это объяснить, это просто происходит после того, как я нажимаю на флажок на JOptionPane. После щелчка я устанавливаю красную границу или устанавливаю нулевую границу на метке, ничего больше.

Комментарии:

1. SSCCE было бы неплохо. Я не совсем понимаю проблему.

2. Здесь было бы полезно немного больше кода.

3. Кстати, зачем использовать оператор ->?? Это Java, а не C

4. @ignis, этот фрагмент со стрелкой-это не код 🙂 Я просто написал это, чтобы объяснить, что делает опция проверки. Извините за недопонимание.

Ответ №1:

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

 Color col = new Color(
    rand.nextFloat(),
    rand.nextFloat(),
    rand.nextFloat(),
    rand.nextFloat());
Color playColor= new Color(col.getRed(), col.getGreen(), col.getBlue(), col.getAlpha());
 

..эквивалентно..

 Color playColor = new Color(
    rand.nextFloat(),
    rand.nextFloat(),
    rand.nextFloat(),
    rand.nextFloat());
 

Ответ №2:

Эти флажки не будут «просто появляться» там так точно. Вы рисуете их где-нибудь на этикетках?! Пожалуйста, проверьте это тщательно!

Немного больше кода было бы полезно.

Комментарии:

1. флажки на этикетках-это только изображение реального флажка. Они появляются после того, как я проверяю и снимаю флажок в JPanel. Я их не рисую.

2. Просто покажите нам больше кода, пожалуйста! Меня не волнуют цветные вещи и все остальное. Покажите нам, как именно расположены элементы в JPanel и тому подобное.