AWT コンポーネント (サードパーティ ライブラリ) があり、その上に半透明のパネル (この場合は 128 のアルファ) を表示してマスクする必要があります。これを行う方法はありますか?Sun の AWTUtilities クラスを使用する「TransparentPanel」クラスを見てみましたが、これには 0 < alpha < 255 のピクセルを表示できないという制限があります。これを行う。
1062 次
2 に答える
1
おそらく、半透明のペイントを使用した GlassPane でこれを解決できます。簡単な例を次に示します。
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class GlassFrame extends JComponent
{
public GlassFrame()
{
super();
}
@Override
protected void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g.create();
Paint p = new GradientPaint(
0, 0, new Color(200,180,180,200), //Select RGB and Alpha values
getWidth(), 0, new Color(0,0,0,0)
);
g2.setPaint(p);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
}
public static void main(String args[])
{
JFrame jf = new JFrame("Simple test");
jf.add(new JPanel());
GlassFrame g = new GlassFrame();
jf.setSize(300,300);
jf.setVisible(true);
jf.setGlassPane(g);
g.setVisible(true);
}
}
于 2011-02-16T23:33:46.233 に答える
0
私の知る限り、あなたはこれを行うことはできません。Swing コンポーネントが上に表示されている間に AWT コンポーネントのスクリーン キャプチャを作成し、最終的にスクリーン キャプチャをときどき更新することで、より近い結果が得られます。つまり、ネイティブ コンポーネントは実際には存在せず、スクリーン キャプチャ モードでは使用できません (マウス クリックやキー イベントには応答しません)。
これは、DJ NativeSwing の例の 1 つが、埋め込まれた Web ブラウザーの上にアルファ透明度を持つ Swing PNG 画像をオーバーレイするために行うことです。デモを確認してください: http://djproject.sourceforge.net/ns
于 2011-02-22T23:11:32.217 に答える