Java swing图层的问题 10
我想详细了解swing的多层图层知识,看下面两个代码为什么出来的效果是不一样的?importjavax.swing.*;importjava.awt.*;publiccl...
我想详细了解swing 的多层图层知识,看下面两个代码为什么出来的效果是不一样的?
import javax.swing.*;
import java.awt.*;
public class Mycanvas1
{
public static void main(String args[]){
JFrame f=new JFrame();
JButton b=new JButton("玻璃面板");
JButton b1=new JButton("内容面板之上");
JButton b2=new JButton("内容面板之下");
JButton b3=new JButton("内容面板");
JComponent p1=(JComponent)f.getGlassPane();
JComponent p2=(JComponent)f.getContentPane();
JComponent p3=(JComponent)f.getLayeredPane();
JComponent p4=(JComponent)f.getRootPane();
p1.setBackground(Color.red);
p2.setBackground(Color.yellow);
p3.setBackground(Color.blue);
p4.setBackground(Color.green);
p1.add(b);
p2.add(b3,BorderLayout.SOUTH);
//p2.setOpaque(false);
p3.add(b2,new Integer(-30001));
p3.add(b1,new Integer(-29999));
//p3.setOpaque(false);
b1.setSize(200,22); b1.setLocation(7,35);
b2.setSize(200,22); b2.setLocation(7,60);
f.setLocation(222,122);
f.setSize(600,600);
f.setVisible(true);
}
}
这个类可以通过透明来显示不同层的组件,但是
import java.awt.*;
import javax.swing.*;
public class Mycanvas2 extends JFrame{
Mycanvas2(){
JButton b1=new JButton("内容面板之上");
JButton b2=new JButton("内容面板之下");
JButton b3=new JButton("内容面板");
JComponent p1=(JComponent)this.getGlassPane();
JComponent p2=(JComponent)this.getContentPane();
JComponent p3=(JComponent)this.getLayeredPane();
JComponent p4=(JComponent)this.getRootPane();
p1.setBackground(Color.blue);
p2.setBackground(Color.red);
p3.setBackground(Color.BLACK);
p4.setBackground(Color.CYAN);
p2.add(b3,BorderLayout.SOUTH);
//p2.setOpaque(false);
//p3.setOpaque(true);
p3.add(b1,new Integer(22));
p3.add(b2,new Integer(-30001));
setLocation(222,122);
setSize(600,600);
setVisible(true);
}
public static void main(String args[]){
new Mycanvas2();
}
}
这个类是写的测试的类,计本上就是和第一个类是一样的,但是这个类却不能显示各个图层的组件,我原本就是想测试图层的透明,然后再在图层上增加图片,canvas什么的,想实现的是一中类似于google地图的小东西,目前只要实现三层即可,最底层canvas,上一层是个jpanel,最上一层准备加一个透明的textarea,实现文字的描述,但是现在这个图层的叠加还是有点一知半解,忘高手大虾不忘赐教 展开
import javax.swing.*;
import java.awt.*;
public class Mycanvas1
{
public static void main(String args[]){
JFrame f=new JFrame();
JButton b=new JButton("玻璃面板");
JButton b1=new JButton("内容面板之上");
JButton b2=new JButton("内容面板之下");
JButton b3=new JButton("内容面板");
JComponent p1=(JComponent)f.getGlassPane();
JComponent p2=(JComponent)f.getContentPane();
JComponent p3=(JComponent)f.getLayeredPane();
JComponent p4=(JComponent)f.getRootPane();
p1.setBackground(Color.red);
p2.setBackground(Color.yellow);
p3.setBackground(Color.blue);
p4.setBackground(Color.green);
p1.add(b);
p2.add(b3,BorderLayout.SOUTH);
//p2.setOpaque(false);
p3.add(b2,new Integer(-30001));
p3.add(b1,new Integer(-29999));
//p3.setOpaque(false);
b1.setSize(200,22); b1.setLocation(7,35);
b2.setSize(200,22); b2.setLocation(7,60);
f.setLocation(222,122);
f.setSize(600,600);
f.setVisible(true);
}
}
这个类可以通过透明来显示不同层的组件,但是
import java.awt.*;
import javax.swing.*;
public class Mycanvas2 extends JFrame{
Mycanvas2(){
JButton b1=new JButton("内容面板之上");
JButton b2=new JButton("内容面板之下");
JButton b3=new JButton("内容面板");
JComponent p1=(JComponent)this.getGlassPane();
JComponent p2=(JComponent)this.getContentPane();
JComponent p3=(JComponent)this.getLayeredPane();
JComponent p4=(JComponent)this.getRootPane();
p1.setBackground(Color.blue);
p2.setBackground(Color.red);
p3.setBackground(Color.BLACK);
p4.setBackground(Color.CYAN);
p2.add(b3,BorderLayout.SOUTH);
//p2.setOpaque(false);
//p3.setOpaque(true);
p3.add(b1,new Integer(22));
p3.add(b2,new Integer(-30001));
setLocation(222,122);
setSize(600,600);
setVisible(true);
}
public static void main(String args[]){
new Mycanvas2();
}
}
这个类是写的测试的类,计本上就是和第一个类是一样的,但是这个类却不能显示各个图层的组件,我原本就是想测试图层的透明,然后再在图层上增加图片,canvas什么的,想实现的是一中类似于google地图的小东西,目前只要实现三层即可,最底层canvas,上一层是个jpanel,最上一层准备加一个透明的textarea,实现文字的描述,但是现在这个图层的叠加还是有点一知半解,忘高手大虾不忘赐教 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询