2011-01-04 3 views
4

У меня темно-серый JPanel с JLabel на нем. Я установил new Color(0, 0, 0, .5f) (tranparent) в качестве фона JLabel и несколько раз меняю текст с помощью кнопки. Проблема в том, что каждый раз, когда текст изменяется, предыдущий текст по-прежнему остается за новым текстом. Я меняю текст с «123456789» на «1234567», «12345» и «123». Вот скриншот:Проблема прозрачности JPanel

alt text

Как избавиться от этой «тени»?

+1

немного кода для запуска будет хорошо. – gigadot

+1

Не используйте нулевой макет и решение, которое я дал вам, отлично. Если вы хотите использовать нулевой макет, то это еще одна строка кода. Нулевой макет - это всегда дополнительная работа, поэтому узнайте, как использовать менеджеры макетов и экономить время. – camickr

ответ

5

Отъезд Backgrounds With Transparency для получения информации и возможного решения.

И в будущем пост SSCCE, демонстрирующий проблему, а не изображение.

2

попробовать это, может быть, это будет решить вашу проблему: В actionPeroformed ..

public void actionPerformed(ActionEvent e) { 
    final JLabel tmpLabel = new JLabel(value[++i]); //change text 
    label.setFont(new Font("Times New Roman", 1, 36)); 
    label.setForeground(new Color(255, 255, 255)); 
    label.setBackground(new Color(0, 0, 0, .5f)); 
    label.setHorizontalAlignment(SwingConstants.CENTER); 
    label.setOpaque(true); 
    label.setBounds(10, 10, 270, 70); 
    label = tmpLabel; //replace the entire label with a new label 
} 
Смежные вопросы