JAVA - 创建并显示带有按钮的透明 window

JAVA - Creating and showing a transparent window with a button

我正在尝试创建一个带有一堆按钮的透明全屏叠加层。

我已经使用 JFrame 创建了叠加层,但是按钮没有显示。

package com.Flickr.firstApp;

import javax.swing.*;
import java.awt.*;
import java.util.Random;

public class MainClass {

    public static void main(String... args) throws Exception {
        Robot robot = new Robot();
        Random random = new Random();

        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        JFrame frame = new JFrame("Flow Layout");

        frame.setUndecorated(true);
        frame.setOpacity(0.2f);

        frame.setSize(screenSize);

        Panel panel = new Panel();
            panel.setPreferredSize(new Dimension(100,100));


            panel.setBackground(Color.MAGENTA);


            JButton b1 = new JButton("hello");
panel.add(b1);



        frame.add(panel);

        frame.setVisible(true);

    }
}

作为新手,有几个问题可以加深理解:

  1. 为什么按钮不显示?
  2. 为什么即使我将尺寸设置为 200x200,面板也会覆盖整个框架?默认情况下它会尝试填充框架吗?
  3. 内容是否必须放在面板中,或者我们可以将按钮等直接放在框架上吗?

如果您能回答这些问题中的任何一个,或者向我指出可以回答的资源,那就太棒了。谢谢!

  1. 按钮显示给我。它的不透明性使其难以看清。

  2. 框架内容窗格的默认布局管理器是 BorderLayout。当您不指定约束时,它被添加到 CENTER。 CENTER 中的任何组件都会调整大小以填充框架中可用的 space。

  3. 您可以将任何组件添加到框架中。如果您直接添加按钮,那么它将调整大小以填充框架。您需要了解布局管理器的工作原理。

不要使用面板,它是一个 AWT 组件。对 Swing 使用 JPanel

point me towards a resource

阅读 Swing Tutorial 了解许多 Swing 基础知识。有以下部分:

  1. 布局管理器可视化指南
  2. 如何创建半透明和异形 Windows

与其他基本演示程序一起帮助您入门。