7

この質問に関連: Java チュートリアルの半透明ウィンドウの例は、jdk7 で遊んでいる人に問題を引き起こしていますか?

jdk1.6.0_26 では JFrame に半透明性を適用できるようですが、jre7 ではそうではありません。

NativeException: java.awt.IllegalComponentStateException: フレームが装飾されています

ex(jrubyスクリプトJava、jdk7ではなくjdk1.6で動作します):

「Java」が必要

クラス 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
  終わり

終わり
MouseDraw.go

だから私の質問は、「jdk7で半透明のタイトルバーを持つことは可能ですか」です(私が作成している透明なウィンドウをドラッグ可能/サイズ変更可能にしたい)

4

2 に答える 2

8

Java 7 ではWindow.setOpacity()、非公式クラスAWTUtilitiesが Java 6 で行っていたことを行うために導入されました。

残念ながら、装飾されたウィンドウでは機能しないことが文書化されています。

不透明度の値を 未満に設定するには、次の条件を満たす必要があります1.0f

(私のものを強調)

于 2011-09-09T08:24:45.407 に答える
3

付け加えると面白いことに

JFrame.setDefaultLookAndFeelDecorated(true);

次に、タイトル バー JFrame を使用してドラッグ可能にすることができます (見苦しい Java ルック アンド フィールを使用するだけです)。

ref: Java UI の背後にあるアプリケーションにマウス イベントを渡す

今、それは奇妙です。

また、ピクセルごとの透明度を使用して古い動作を「偽造」できることに注意してください。http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shape_windows.html

そのため、Java 6 と 7 の両方で古い動作を使用できますが、その周りのコードを特殊なケースに入れ、一方の方法で、もう一方の方法で、おそらく...

于 2011-09-13T22:05:45.717 に答える