2011-09-08 44 views
7

: Bir JFrame için saydamlığını uygulamak mümkün görünmektedir jdk1.6.0_26 ile Is The Java Tutorials Translucent Window example giving trouble to those playing with jdk7?bir başlık çubuğu da dahil java 7'de saydam pencereleri mümkün mü? Bu soruya İlgili

ama o kadar jre7 ile:

NativeException: java.awt.IllegalComponentStateException: çerçeve

süslüdür

ex (jruby betik java, olmasa jdk7 ile JDK 1.6 çalışır) :

 

require 'java' 

class MouseDraw 

    def self.go 
    java_import 'javax.swing.JFrame' 
    java_import 'com.sun.awt.AWTUtilities' 

    f = JFrame.new 
    AWTUtilities.set_window_opacity(f, 0.5) 
    f.set_size 200,200 
    f.show 
    end 

end 
MouseDraw.go 

benim soru yani "mümkün olması jdk7" bir saydam başlık çubuğu

resmi olmayan sınıf AWTUtilities Java 6.

yaptıklarını yapmak Window.setOpacity() tanıtıldı

cevap

8

Java 7 Maalesef öyle (I/sürüklenebilir yeniden boyutlandırılabilir olması yaratıyorum şeffaf pencere istiyorum) dekore pencereli çalışmamasına dokümante edilebilir:

aşağıdaki koşullar 1.0f daha az donukluk değeri ayarlamak için yerine getirilmesi gerekir:

+3

gerçekten talihsiz, var olan kodu bozan bir davranış değişikliği ... – kleopatra

+0

Kleopatra: Kullanılmış resmi olmayan API: 'AWTUtilities' Java SE tanımlanmayan ve yeni bir yöntem daha önce tanımlanan ortak bir yöntem ile uyumlu kesilmez.Teknik olarak –

+1

teknik olarak, aynı zamanda teknik olarak da haklı olmadım: bunun yerine, uygulamanın işlevselliğinin yarısı resmi bir önizlemesi olan AWTUtilitiesWrapper'ı kullandı (ve oldukça güvenli olarak ilan edildi ;-) – kleopatra

2

Şaşırtıcı bir (Vurgu madeni), sen

eklerseniz
JFrame.setDefaultLookAndFeelDecorated(true); 

Sonra sen (bu sadece çirkin java görünüm ve his kullanır) başlık çubuğu JFrame ile, bir sürüklenebilir sahip olmasını sağlar.

ref: Pass mouse events to applications behind from a Java UI

Şimdi bu garip.

Ayrıca "sahte" piksel şeffaflık başına kullanarak eski davranış, http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html

böylece java 6 ve 7 hem de eski davranışa sahip olabilir görebilirsiniz, ama özel durum kodu olurdu unutmayın etrafında ve başka biri için bir yolu, bir yolu yapmak için muhtemelen bir ...