Swing-setOpaque()用法-入门

先看API:

public void setOpaque(boolean isOpaque)

如果为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制部分或所有像素,从而允许其底层像素透视出来。 

对于 JComponent 而言,此属性的默认值是 false。但是对于大多数标准的 JComponent 子类(如 JButton 和 JTree),此属性的默认值与外观有关。 

参数: isOpaque - 如果此组件应该是不透明的,则为 true

Opaque是不透明的意思,当设置为false时,组件是透明的,可显示下方的组件。下面是测试用例:

 

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

/*
 * 2015-06-15
 */

public class SetOpaqueDemo extends JFrame {

  public SetOpaqueDemo() {
    super("setOpaqueDemo");
    setSize(400, 200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    //不透明,看到黑色顶层
    JPanel opaquePanel = createNested(true);
    //透明,露出白色底层
    JPanel notOpaque = createNested(false);

    getContentPane().setLayout(new FlowLayout());
    getContentPane().add(opaquePanel);
    getContentPane().add(notOpaque);
  }

  

  public JPanel createNested(boolean opaque) {
    JPanel outer = new JPanel(new FlowLayout());
    JPanel inner = new JPanel(new FlowLayout());
    //底层panel为白色,顶层为黑色    
    outer.setBackground(Color.white);
    inner.setBackground(Color.black);

    inner.setOpaque(opaque);
    inner.setBorder(BorderFactory.createLineBorder(Color.gray));
    inner.setPreferredSize(new Dimension(40, 20));
    outer.add(inner);

    return outer;
  }
  
  public static void main(String[] args) {
        SetOpaqueDemo setOpaqueDemo = new SetOpaqueDemo();
        setOpaqueDemo.setVisible(true);
      }
}

运行效果如下图所示:

运行效果图

可见,setOpaque(false)使panel变成了透明效果。

转载于:https://www.cnblogs.com/pzy4447/p/4579360.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值