0

我在带有 Mac OS X 的 Java 6 下使用透明(形状)JFrame。

我的系统告诉我支持 Translucency.PERPIXEL_TRANSLUCENT。虽然我的系统告诉我不支持 Translucency.PERPIXEL_TRANSPARENT,但我发现它在 Mac OS X 下放置 alpha=0 的像素时可以工作。

现在,当在 JTextField 中选择文本时,它也会拖动窗口,就好像我将拖动底层内容窗格一样。

这是我要尝试的示例代码(包含在您的计算机上运行的主要方法)

import com.sun.awt.AWTUtilities;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class DialogTest extends JFrame {

    public DialogTest() {
        setBackground(new Color(0, 0, 0, 0));
        JPanel p1 = new JPanel() {
            public void paintComponent(Graphics g1) {
                if (g1 instanceof Graphics2D) {
                    Paint p =
                            new GradientPaint(0.0f, 0.0f, new Color(240,240,240, 0),
                            0.0f, getHeight(), new Color(240,240,240, 255), true);

                    Graphics2D g2d = (Graphics2D) g1;
                    g2d.setPaint(p);
                    Shape s = new Ellipse2D.Double(0,0,getWidth(),getHeight());
                    g2d.fill(s);
                }
            }
        };

        add(p1);
        p1.setOpaque(false);
        p1.add(new JButton("button 1"));
        JTextField tf = new JTextField("Sample Text To Select");
        p1.add(tf);
        p1.add(new JButton("button 2"));

        setUndecorated(true);       
        setSize(400,400);
        AWTUtilities.setWindowOpaque(this, false);
    }

    public static void main(String[] s) {
        // Create the GUI on the event-dispatching thread
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                DialogTest tw = new DialogTest();

                // Display the window.
                tw.setVisible(true);
            }
        });


   }
}
4

0 回答 0