首先创建一个带有滑块的框架,该滑块将用于设置透明度量。
import javax.swing.JFrame;
import javax.swing.JSlider;

public class TransparentFrame extends JFrame {
     public TransparentFrame() {
         setTitle('Transparent Frame');
         setSize(400,400);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         JSlider slider = new JSlider(JSlider.HORIZONTAL);
         add(slider);
         setVisible(true);
     }
     public static void main(String[] args) {
         new TransparentFrame();
     }
}

其输出将是:

使JFrame透明

现在将更改侦听器添加到滑块,以便我们可以对其进行监视。

slider.addChangeListener(new ChangeListener() {
       @Override
       public void stateChanged(ChangeEvent e) {
       }
});

现在,我们将在此方法中编写透明性逻辑,但是在执行此操作之前,首先让我们看看如何使JFrame透明。

为了使JFrame透明,java具有一个内置的实用程序类AWTUtilities 通过使用此类提供的方法,我们可以使JFrame透明。 以下是该代码:

AWTUtilities.setWindowOpacity(window, floatOpacity);

参数:

窗口–您的框架/窗口对象。

floatOpactity-在0到1之间。1表示不透明,0表示完全透明。

因此,现在我们知道我们必须将此逻辑添加到滑块更改事件,并将滑块值指定为floatOpacity值。 因此对于以下状态更改stateChanged()方法:

@Override
public void stateChanged(ChangeEvent e) {
      JSlider slider = (JSlider) e.getSource();
      if(!slider.getValueIsAdjusting()){
            AWTUtilities.setWindowOpacity(TransparentFrame.this, slider.getValue());
      }
}

认为已经完成。 不,我们仍然必须确保不透明度值不超过其0.0f到1.0f的限制。 因此,我们必须将滑块限制为这些值。 由于滑块不支持点值,因此我们将以10的倍数取值,然后将它们除以100得到所需的值。 为此,我们将更改JSlider声明和stateChanged,如下所示:

JSlider slider = new JSlider(JSlider.HORIZONTAL, 10, 100, 100);

在stateChanged方法中更改以下行:

AWTUtilities.setWindowOpacity(TransparentFrame.this, slider.getValue()/100f);

因此,现在当我们运行该程序时,我们会看到一个框架,其中带有一个设置为结束的滑块。 当我们更改滑块时,框架会相应地更改其透明度。

输出:

使JFrame透明

注意:

要在Eclipse中使用AWTUtilities类,您需要更改首选项设置,否则访问受限类可能会出错。 要更改设置,请执行以下操作:

  1. 右键单击您的项目。 选择属性。
  2. 选择Java编译器并将其展开。
  3. 选择错误/警告。
  4. 启用项目特定的设置。
  5. 在“不建议使用和限制的API”中,您将找到“禁止引用(访问规则)”。将其更改为“警告”或“忽略”

参考: harryjoy博客上的JCG合作伙伴 Harsh Raval 使JFrame透明

翻译自: https://www.javacodegeeks.com/2012/09/make-jframe-transparent.html

相关文章:

  • 2021-06-06
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2022-02-16
  • 2021-10-23
猜你喜欢
  • 2021-09-20
  • 2021-09-14
  • 2021-12-30
  • 2022-01-01
  • 2022-12-23
  • 2021-06-30
  • 2021-08-10
相关资源
相似解决方案