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變成了透明效果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM