DYS'yi ikinci monitörde kullanırken pencere boyutları kayıyor ve ekteki PDF'leri önizleme yaparken ekran siyah oluyor, ana ekrana alınca düzeliyor. Çözümü var mı?
2 Cevap
Merhaba, adliyelerde çift monitör kullanan zabıt katibi, yazı işleri müdürü ve hakimlerin karşılaştığı en can sıkıcı teknik problemlerden birini tarif etmişsiniz. Doküman Yönetim Sistemi'nin (DYS) ikinci monitörde butonları ve pencereleri kaydırması ile PDF önizleme panelinin simsiyah kalması, iki temel teknik çakışmanın doğrudan sonucudur: Karma DPI Ölçekleme Uyuşmazlığı ve Java 2D Direct3D Donanım Hızlandırma Yüzeyi Kaybı.
Sorunun Teknik Sebepleri:
- DPI Ölçekleme Çakışması (Per-Monitor DPI Scaling): Laptop ekranınız %125 veya %150 ölçekteyken, harici monitörünüz %100 ölçekte çalıştığında Windows her iki ekran için farklı piksel yoğunluğu hesaplar. DYS'nin kullandığı eski Java Swing / AWT kütüphanesi modern Windows'un ekranlar arası dinamik DPI geçişlerini (Per-Monitor V2) tam olarak desteklemez. Pencere ikinci ekrana çekildiğinde yazı tipleri ve bileşen boyutları yanlış hesaplanarak menüler taşar.
- PDF Önizlemedeki Siyah Ekran (DirectX Render Buffer Kaybı): DYS içindeki PDF önizleme modülü (ICEpdf veya JavaFX WebView tabanlı motor), evrakları ekrana hızlı çizmek için ekran kartınızın Direct3D / DirectDraw donanım hızlandırmasını kullanır. Pencere ana monitörden farklı bir yenileme hızı veya GPU kanalına bağlı ikinci ekrana taşındığında, Java'nın ekran kartındaki Direct3D çizim bağlamı (device context) kopar ve arka tampon bellek (back buffer) sıfırlanarak ekran tamamen siyaha düşer. Belge ana ekrana dönünce GPU bağlamı yeniden sağlandığı için görüntü geri gelir.
Kalıcı Çözüm İçin Uygulanacak Adımlar:
1. Java'nın Yüksek DPI Davranışını Windows Üzerinde Geçersiz Kılın
- Bilgisayarınızda Java'nın kurulu olduğu dizine gidin (Genellikle
C:\Program Files\Java\jre1.8.0_xxx\binveya 32-bit kullanıyorsanızC:\Program Files (x86)\Java\jre1.8.0_xxx\bin). - Bu klasördeki javaw.exe dosyasına sağ tıklayın ve Özellikler seçeneğini açın.
- Uyumluluk (Compatibility) sekmesine geçin ve Yüksek DPI ayarlarını değiştir (Change high DPI settings) butonuna tıklayın.
- Pencerenin altındaki 'Yüksek DPI ölçeklendirme davranışını geçersiz kıl' kutucuğunu işaretleyin.
- Açılır menüden Sistem (Gelişmiş) / System (Enhanced) seçeneğini belirleyin ve Tamam diyerek kaydedin. Aynı işlemi aynı klasördeki
java.exedosyası için de tekrarlayın. Bu ayar, DYS pencerelerinin ikinci ekrana geçtiğinde bozulmadan Windows tarafından ölçeklenmesini sağlar.
2. Direct3D Donanım Hızlandırmasını Kapatarak Siyah Ekranı Yok Edin
PDF önizlemesindeki siyah ekranı çözmenin kesin yolu, Java'ya ekran kartı donanım hızlandırmasını zorlamak yerine güvenli GDI yazılımsal render yaptırmaktır:
- Windows Arama çubuğuna
Configure Javayazarak Java Control Panel'i açın. - Üstteki Java sekmesine gelin ve View (Görüntüle) butonuna tıklayın.
- Listelenen Java sürümünün Runtime Parameters (Çalışma Zamanı Parametreleri) sütununa çift tıklayın ve şu parametreleri yapıştırın:
-Dsun.java2d.d3d=false -Dsun.java2d.noddraw=true - Apply (Uygula) ve OK butonlarına basarak kaydedin. Bu parametreler GPU yüzey kaybını engeller ve ikinci ekranda PDF'lerin anında pürüzsüz görüntülenmesini sağlar.
3. Windows Görüntü Ayarlarını Optimize Edin
- Masaüstüne sağ tıklayıp Görüntü Ayarları'na girin.
- Harici 24 inçlik monitörünüzü seçin ve alt kısımdaki 'Bu ekranı ana ekranım yap' (Make this my main display) kutusunu işaretleyin.
- Mümkünse her iki ekranın ölçekleme oranını aynı değere (örneğin ikisini de %100 veya ikisini de %125) getirin.
Bu konfigürasyon sonrasında DYS pencerelerini iki ekran arasında serbestçe taşıyabilir, PDF eklerini hiçbir siyah ekran veya kayma olmadan hızlıca inceleyebilirsiniz.
Eğer yukarıdaki adımlara rağmen siyah ekran devam ediyorsa, bilgisayarınızda çift ekran kartı (Intel Dahili Grafikler + NVIDIA/AMD Harici Kart) bulunuyor olabilir. Windows Ayarları > Grafik Ayarları bölümüne javaw.exe dosyasını ekleyip grafik tercihini 'Güç Tasarrufu' (Dahili Intel Grafik) olarak seçiniz. Çift ekran kartlı laptoplarda harici monitör NVIDIA üzerinden sürülürken Java'nın Intel üzerinde kalması yüzey kilitlenmesine neden olmaktadır.