У меня есть элемент, который постоянно перекрашивается, когда он существует, в результате чего процессор начинает всплывать, когда он находится в любом из моих окон. Он напрямую наследуется от JLabel и, в отличие от других JLabels на экране, имеет красный фон и рамку. Я понятия не имею, почему это будет достаточно отличаться, чтобы постоянно перекрашивать. CallCack выглядит так:
Thread [AWT-EventQueue-1] (Suspended (breakpoint at line 260 in sItem))
sItem.paint(Graphics) line: 260
sItem(JComponent).paintToOffscreen(Graphics, int, int, int, int, int, int) line: 5124
RepaintManager$PaintManager.paintDoubleBuffered(JComponent, Image, Graphics, int, int, int, int) line: 1475
RepaintManager$PaintManager.paint(JComponent, JComponent, Graphics, int, int, int, int) line: 1406
RepaintManager.paint(JComponent, JComponent, Graphics, int, int, int, int) line: 1220
sItem(JComponent)._paintImmediately(int, int, int, int) line: 5072
sItem(JComponent).paintImmediately(int, int, int, int) line: 4882
RepaintManager.paintDirtyRegions(Map<Component,Rectangle>) line: 803
RepaintManager.paintDirtyRegions() line: 714
RepaintManager.seqPaintDirtyRegions() line: 694 [local variables unavailable]
SystemEventQueueUtilities$ComponentWorkRequest.run() line: 128
InvocationEvent.dispatch() line: 209
summitEventQueue(EventQueue).dispatchEvent(AWTEvent) line: 597
summitEventQueue(SummitHackableEventQueue).dispatchEvent(AWTEvent) line: 26
summitEventQueue.dispatchEvent(AWTEvent) line: 62
EventDispatchThread.pumpOneEventForFilters(int) line: 269
EventDispatchThread.pumpEventsForFilter(int, Conditional, EventFilter) line: 184
EventDispatchThread.pumpEventsForHierarchy(int, Conditional, Component) line: 174
EventDispatchThread.pumpEvents(int, Conditional) line: 169
EventDispatchThread.pumpEvents(Conditional) line: 161
EventDispatchThread.run() line: 122 [local variables unavailable]
В основном, это просто непрерывно бить снова и снова так быстро, как я могу нажать продолжить. Код, который «уникален» для этой конкретной метки, выглядит примерно так:
bgColor = OurColors.clrWindowTextAlert;
textColor = Color.white;
setBackground(bgColor);
setOpaque(true);
setSize(150, getHeight());
Border border_warning = BorderFactory.createCompoundBorder(
BorderFactory.createMatteBorder(1, 1, 1, 1, OurColors.clrXBoxBorder),
Global.border_left_margin);
setBorder(border_warning);
Очевидно, что он делает больше, но этот конкретный блок существует только для тех меток, которые вызывают всплеск / непрерывную перерисовку.
Есть идеи, почему он будет перекрашивать этот конкретный ярлык?