Подобный Q для мерцание всплывающей подсказки в Java, если вне JFrame?
Постоянно обновляемая легкая всплывающая подсказка работает нормально, но как только она выходит за границы окна или становится тяжелой (путем отключения легких всплывающих окон), это мерцающий город.
Пробовал подсказку «-Dsun.awt.noerasebackground=true», которая работает внутри окна, но за счет некоторых артефактов рисования поверх других компонентов (этот пример — просто пустая панель). За пределами окна это не помогает, мерцание все еще ужасное.
Кто-нибудь знает, как это решить? Или в настоящее время это невозможно?
Пример в этом коде -->
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
public class JTooltipFlickerTest extends JFrame {
JPanel panel;
static public void main (final String[] args) {
new JTooltipFlickerTest ();
}
public JTooltipFlickerTest () {
super ();
//ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
//ToolTipManager.sharedInstance().setReshowDelay(0);
setTitle (this.getClass().toString());
setSize (1024, 768);
this.getContentPane().setLayout (new BorderLayout());
SwingUtilities.invokeLater (
new Runnable () {
@Override
public void run() {
panel = new JPanel ();
final MouseAdapter ma = new MouseAdapter () {
public void mouseMoved (final MouseEvent e) {
panel.setToolTipText ("x: "+e.getX()+", y: "+e.getY());
}
};
panel.addMouseMotionListener(ma);
//panel.setDoubleBuffered(true);
//panel.createToolTip().setDoubleBuffered(true);
JTooltipFlickerTest.this.getContentPane().add (panel, "Center");
JTooltipFlickerTest.this.setVisible (true);
}
}
);
}
}