Swing/TransparentFrame のバックアップの現在との差分(No.1)
TITLE:JInternalFrameを半透明にする
JInternalFrameを半透明にする
編集者:Terai Atsuhiro~
作成日:2007-04-30
更新日:2022-01-17 (月) 05:28:50
- category: swing folder: TransparentFrame title: JInternalFrameを半透明にする tags: [JInternalFrame, JDesktopPane, ContentPane, Transparent, Translucent] author: aterai pubdate: 2007-04-30T21:08:08+09:00 description: JInternalFrameのフレーム内を半透明にします。 image: hreflang:
href: https://java-swing-tips.blogspot.com/2011/02/translucent-jinternalframe-nimbus.html lang: en
概要
JInternalFrame
のフレーム内を半透明にします。
概要
JInternalFrameのフレームを半透明にします。Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
JPanel p1 = new JPanel();
p1.setOpaque(false);
JPanel p2 = new JPanel() {
public void paintComponent(Graphics g) {
//super.paintComponent(g);
g.setColor(new Color(100,50,50,100));
g.fillRect(0,0,getWidth(), getHeight());
@Override protected void paintComponent(Graphics g) {
// super.paintComponent(g);
g.setColor(new Color(100, 50, 50, 100));
g.fillRect(0, 0, getWidth(), getHeight());
}
};
JPanel p3 = new JPanel() {
public void paintComponent(Graphics g) {
@Override protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(new Color(100,120,100,100));
g2.fillRect(0,0,getWidth(),getHeight());
int cs = 4;
for(int i=0;i*cs<getWidth();i++) {
for(int j=0;j*cs<getHeight();j++) {
if((i+j)%2==0) g2.fillRect(i*cs, j*cs, cs, cs);
}
}
// g2.setPaint(new Color(100, 120, 100, 100));
g2.setPaint(texture);
g2.fillRect(0, 0, getWidth(), getHeight());
}
};
#spanadd
#spanend
#spanadd
protected JInternalFrame createFrame(JPanel panel) {
#spanend
MyInternalFrame frame = new MyInternalFrame();
if (panel != null) {
frame.setContentPane(panel);
// JButton button = new JButton("button");
// button.setOpaque(false);
panel.add(new JLabel("label"));
panel.add(new JButton("button"));
}
desktop.add(frame);
frame.setOpaque(false);
frame.setVisible(true);
// ...
- &jnlp;
- &jar;
- &zip;
解説
- Frame#1
- ContentPaneをsetOpaque(false)して透過しています。
解説
上記のサンプルでは、各JInternalFrame
のContentPane
をJInternalFrame#setContentPane(Container)
メソッドを使用して半透明パネルに変更しています。
- Frame#2
- ContentPaneを半透明な色で塗りつぶしています。
-
Frame#1
(Transparent
)-
ContentPane
をsetOpaque(false)
して透明化
-
- Frame#3
- ContentPaneを半透明な色を使ってチェック柄で塗りつぶしています。
-
Frame#2
(Translucent
)-
ContentPane
を半透明な色で塗りつぶし
-
コメント
-
Frame#3
(Translucent
)-
ContentPane
を半透明な色を使ってチェック柄で塗りつぶし
-