java - JDialog 闪烁/闪烁作为通知

标签 java swing netbeans notifications jdialog

我正在使用 JDialog 在应用程序的右下角显示通知。我最多显示 4 条通知,最新的通知位于顶部。通知是根据服务器的内容显示的,因此可能只有 1 个或 3 个通知,最多 4 个。这会导致 JDialog 的大小调整,而调整大小会导致 JDialog 的位置发生变化,以便始终在右下角对齐。更改每个新通知收入的位置会导致 JDialog 闪烁。

下面是我每次收到新通知时调用的代码:

private void updateDialog()
{

    Point p = frame.getLocationOnScreen();
    p.x += frame.getWidth()-getWidth()-5;
    p.y += frame.getHeight()-getHeight()-25;

    setLocation(p); 
    pack();
    repaint();
}

有人遇到过类似的问题吗?你是怎么解决的?关于我应该尝试做什么还有其他建议吗?

最佳答案

  • 与 repaint() 的代码行相反,删除它,

  • 如果 void updateDialog() 中没有其他代码行,那就更好了,否则 pack() 应该包装到 invokeLater();

代码

private void updateDialog() {
    setVisible(false);
    Point p = frame.getLocationOnScreen();
    p.x += frame.getWidth() - getWidth() - 5;
    p.y += frame.getHeight() - getHeight() - 25;
    setLocation(p);
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            pack();
            //repaint(); // useless remove this codeline
            setVisible(true);
        }
    });
}

关于java - JDialog 闪烁/闪烁作为通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820023/

相关文章:

java - JPanel 的滑动效果

java - 设置 Java Swing Input Dialog Always on top

java - 为什么我在 NetBeans 中收到 "Could not find or load main class ..."错误?

java - IF 语句的 JList 数据添加

java - 无法在 NetBeans 8.2 和 Apache 11 w/JDK 8u221 中创建 PHP 项目(卡在 40%)

java - JAX-RPC com.sun.xml.rpc.client.BasicService 未找到

java - JMeter是否支持UI的性能测试

java - 在某些情况下使用 google-rfc-2445 (iCalendar) 时会返回开始日期

java - iText : How does add image to top of PDF page

java - 设置 NativeSelect 的自定义值