Проводя несколько минут, настраивая мои настольные часы, я обнаружил проблему, которую я, похоже, не могу решить без помощи ... Я прочитал несколько сообщений с подобной проблемой, но решения не сработали для меня.JLabel сохраняет предыдущий текст
Часы (в типичной форме Java с прослушивателем событий и календарем) отлично работают. Предполагаемая настройка: Чтобы установить рамки Frame, ContentPane и Label на прозрачные, так что только время/текст показывает.
Что происходит в этом случае: Когда фон этикетки прозрачен (или до тех пор, пока он не станет достаточно непрозрачным, если установить значение «Альфа», когда «Непрозрачный» является истинным), базовый предыдущий дисплей останется и не очистится.
Чтобы понять это, я собрал следующий код - время и дата Материал календаря/etc исключен. Этот код является лишь одной версией многих, с которыми я пытался с/без непрозрачности, размещения вызовов ... и т. Д.
Что имеет значение, так это использование прослушивателя действий - если прослушиватель действий замечен/удален, отображение ярлыка прекрасное. Не комментируйте прослушиватель действий, и проблема возникает.
Посмотрите изображения ... Любая помощь оценена ... Спасибо!
FYI - ниже: импорт и комментарии код Санс ...
Скриншот часы с черным BG
Скриншот проблемы:
public class Clear extends JFrame {
private JPanel contentPane;
Color ppColor = new Color(255, 255, 0, 0); // r,g,b,a
Color lblColor = new Color(225, 200, 200, 0);
Color lbl2Color = new Color(225, 200, 200, 254);
int delay = 1000;
JLabel lblTime = new JLabel("TESTING");
JLabel lblTime2 = new JLabel("XXXXXX");
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
final Clear frame = new Clear();
frame.setVisible(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Clear() {
setUndecorated(true);
setBackground(ppColor);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(1680, 975, 128, 74);
contentPane = new JPanel();
contentPane.setBackground(ppColor);
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
lblTime.setOpaque(true);
lblTime.setBackground(lblColor);
lblTime.setBounds(0, 0, 125, 30);
contentPane.add(lblTime);
lblTime2.setOpaque(true);
lblTime2.setBackground(lbl2Color);
lblTime2.setBounds(0, 33, 125, 16);
contentPane.add(lblTime2);
ActionListener myTaskPerformer = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
lblTime.setText("Does it");
lblTime2.setText("work? ");
}
};
new Timer(delay, myTaskPerformer).start();
}
}
Тот же вопрос с этикетками АВТ ... но я не сдаюсь ... Это связано с повторным обжигом метки в слушателем действий , у кого-то есть простое решение. Мне все равно, если он полностью прозрачен, он все равно не работает. Полностью непрозрачный, очевидно, работает, но прозрачным (частично или полностью) является моя цель. – headscratch
Спасибо - я прочитаю ссылку и попробую ваше предложение. – headscratch