返回列表 發帖

JLayeredPane 類別

在視窗程式設計中,JFrame、JPanel、JLayeredPane都是所謂的容器。當視窗裡的元件需依照指定的順序前後交疊,我們可利用 JLayeredPane 容器來指定圖層的順序,透過該類別下的 add(Component comp, Object constraints) 方法,先將元件加入 JLayeredPane 容器,再加入 JFrame 容器。

在本單元練習中,視窗中有六個元件:房間、沙發、窗戶、掛鐘、嬰兒、小丸子。試將這六個元件放入 JLayeredPane 容器並指定圖層 1 到 6,使其可前後交疊,如範例輸出畫面。

各元件的設定如下:
JFrame:100, 100, 580, 435
JLayeredPane:0, 0, 576, 407
房間:0, 0, 576, 407
沙發:150, 238, 410, 193
窗戶:30, 20, 317, 210
掛鐘:420, 15, 106, 106
嬰兒:355, 220, 101, 141
小丸子:-5, 125, 199, 335

素材: pic.zip

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JLayeredPane;
  4. import javax.swing.ImageIcon;
  5. public class Ch105 {

  6.         private JFrame fm;
  7.         private JLayeredPane lp;
  8.         private JLabel lb_baby,lb_clock,lb_girl,lb_room,lb_sofa,lb_window;
  9.        
  10.         Ch105()
  11.         {
  12.                 lb_baby=new JLabel(new ImageIcon(Ch105.class.getResource("pic/baby.png")));
  13.                 lb_clock=new JLabel(new ImageIcon(Ch105.class.getResource("pic/clock.png")));
  14.                 lb_girl=new JLabel(new ImageIcon(Ch105.class.getResource("pic/girl.png")));
  15.                 lb_room=new JLabel(new ImageIcon(Ch105.class.getResource("pic/room.jpg")));
  16.                 lb_sofa=new JLabel(new ImageIcon(Ch105.class.getResource("pic/sofa.png")));
  17.                 lb_window=new JLabel(new ImageIcon(Ch105.class.getResource("pic/window.jpg")));
  18.                 lb_baby.setBounds(355, 220, 101, 141);
  19.                 lb_clock.setBounds(420, 15, 106, 106);
  20.                 lb_girl.setBounds(-5, 125, 199, 335);
  21.                 lb_room.setBounds(0, 0, 576, 407);
  22.                 lb_sofa.setBounds(150, 238, 410, 193);
  23.                 lb_window.setBounds(30, 20, 317, 210);
  24.                
  25.                 lp=new JLayeredPane();
  26.                 lp.setBounds(0, 0, 576, 407);
  27.                 lp.add(lb_room, new Integer(1));
  28.                 lp.add(lb_sofa, new Integer(2));
  29.                 lp.add(lb_window, new Integer(3));
  30.                 lp.add(lb_clock, new Integer(4));
  31.                 lp.add(lb_baby, new Integer(5));
  32.                 lp.add(lb_girl, new Integer(6));
  33.                
  34.                 fm=new JFrame("JLayeredPane 練習");
  35.                 fm.setBounds(100, 100, 580, 435);
  36.                 fm.setVisible(true);
  37.                 fm.setResizable(false);
  38.                 fm.setLayout(null);
  39.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  40.                 fm.add(lp);       
  41.         }
  42.         public static void main(String[] args) {
  43.                 new Ch105();
  44.         }
  45. }
複製代碼

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JLayeredPane;
  4. import javax.swing.ImageIcon;
  5. public class Ch01 {

  6.         private JFrame fm;
  7.         private JLayeredPane lp;
  8.         private JLabel b,c,g,r,s,w;
  9.         Ch01()
  10.         {
  11.                 b=new JLabel(new ImageIcon(Ch01.class.getResource("pic/baby.png")));
  12.                 c=new JLabel(new ImageIcon(Ch01.class.getResource("pic/clock.png")));
  13.                 g=new JLabel(new ImageIcon(Ch01.class.getResource("pic/girl.png")));
  14.                 r=new JLabel(new ImageIcon(Ch01.class.getResource("pic/room.jpg")));
  15.                 s=new JLabel(new ImageIcon(Ch01.class.getResource("pic/sofa.png")));
  16.                 w=new JLabel(new ImageIcon(Ch01.class.getResource("pic/window.jpg")));
  17.                 b.setBounds(355, 220, 101, 141);
  18.                 c.setBounds(420, 15, 106, 106);
  19.                 g.setBounds(-5, 125, 199, 335);
  20.                 r.setBounds(0, 0, 576, 407);
  21.                 s.setBounds(150, 238, 410, 193);
  22.                 w.setBounds(30, 20, 317, 210);
  23.                 lp=new JLayeredPane();
  24.                 lp.setBounds(0, 0, 576, 407);
  25.                 lp.add(r, new Integer(1));
  26.                 lp.add(s, new Integer(2));
  27.                 lp.add(w, new Integer(3));
  28.                 lp.add(c, new Integer(4));
  29.                 lp.add(b, new Integer(5));
  30.                 lp.add(g, new Integer(6));
  31.                 fm=new JFrame("JLayeredPane 練習");
  32.                 fm.setBounds(100, 100, 580, 435);
  33.                 fm.setVisible(true);
  34.                 fm.setResizable(false);
  35.                 fm.setLayout(null);
  36.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37.                 fm.add(lp);      
  38.         }
  39.         public static void main(String[] args) {
  40.                 new Ch01();
  41.         }
  42. }
複製代碼
Allen

TOP

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JLayeredPane;
  4. import javax.swing.ImageIcon;
  5. public class Ch01 {
  6.         JFrame fm;
  7.         JLayeredPane lp;
  8.         JLabel b,c,g,r,s,w;      
  9.         Ch01()
  10.         {
  11.                 b=new JLabel(new ImageIcon(Ch01.class.getResource("pic/baby.png")));
  12.                 c=new JLabel(new ImageIcon(Ch01.class.getResource("pic/clock.png")));
  13.                 g=new JLabel(new ImageIcon(Ch01.class.getResource("pic/girl.png")));
  14.                 r=new JLabel(new ImageIcon(Ch01.class.getResource("pic/room.jpg")));
  15.                 s=new JLabel(new ImageIcon(Ch01.class.getResource("pic/sofa.png")));
  16.                 w=new JLabel(new ImageIcon(Ch01.class.getResource("pic/window.jpg")));
  17.                 b.setBounds(355, 220, 101, 141);
  18.                 c.setBounds(420, 15, 106, 106);
  19.                 g.setBounds(-5, 125, 199, 335);
  20.                 r.setBounds(0, 0, 576, 407);
  21.                 s.setBounds(150, 238, 410, 193);
  22.                 w.setBounds(30, 20, 317, 210);               
  23.                 lp=new JLayeredPane();
  24.                 lp.setBounds(0, 0, 576, 407);
  25.                 lp.add(r, new Integer(1));
  26.                 lp.add(s, new Integer(2));
  27.                 lp.add(w, new Integer(3));
  28.                 lp.add(c, new Integer(4));
  29.                 lp.add(b, new Integer(5));
  30.                 lp.add(g, new Integer(6));              
  31.                 fm=new JFrame("JLayeredPane 練習");
  32.                 fm.setBounds(100, 100, 580, 435);
  33.                 fm.setVisible(true);
  34.                 fm.setResizable(false);
  35.                 fm.setLayout(null);
  36.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37.                 fm.add(lp);      
  38.         }
  39.         public static void main(String[] args) {
  40.                 new Ch01();
  41.         }
  42. }
複製代碼
Ivy

TOP

  1. import javax.swing.ImageIcon;
  2. import javax.swing.JFrame;
  3. import javax.swing.JLabel;
  4. import javax.swing.JLayeredPane;


  5. public class Ch00 {
  6.         JFrame fm;
  7.         JLayeredPane lp;
  8.         JLabel lb_baby,lb_clock,lb_girl,lb_room,lb_sofa,lb_window;
  9.         Ch00()
  10.         {
  11.                 lb_baby=new JLabel(new ImageIcon(Ch00.class.getResource("pic/baby.png")));
  12.                 lb_clock=new JLabel(new ImageIcon(Ch00.class.getResource("pic/clock.png")));
  13.                 lb_girl=new JLabel(new ImageIcon(Ch00.class.getResource("pic/girl.png")));
  14.                 lb_room=new JLabel(new ImageIcon(Ch00.class.getResource("pic/room.jpg")));
  15.                 lb_sofa=new JLabel(new ImageIcon(Ch00.class.getResource("pic/sofa.png")));
  16.                 lb_window=new JLabel(new ImageIcon(Ch00.class.getResource("pic/window.jpg")));
  17.                
  18.                 lp=new JLayeredPane();
  19.         lp.setBounds(0, 0, 576, 407);
  20.         lp.add(lb_room, new Integer(1));
  21.         lp.add(lb_sofa, new Integer(2));
  22.         lp.add(lb_window, new Integer(3));
  23.         lp.add(lb_clock, new Integer(4));
  24.         lp.add(lb_baby, new Integer(5));
  25.         lp.add(lb_girl, new Integer(6));
  26.       
  27.                 fm=new JFrame("不知道是什麼名字");
  28.         fm.setBounds(100, 100, 580, 435);
  29.         fm.setVisible(true);
  30.         fm.setResizable(false);
  31.         fm.setLayout(null);
  32.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  33.         fm.add(lp);      
  34.         }
  35.         public static void main(String[] args) {
  36.                 new Ch00();
  37.         }

  38. }
複製代碼

TOP

  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.JLayeredPane;
  4. import javax.swing.ImageIcon;
  5. public class Ch01 {

  6.         private JFrame fm;
  7.         private JLayeredPane lp;
  8.         private JLabel lb_baby,lb_clock,lb_girl,lb_room,lb_sofa,lb_window;

  9.         Ch01()
  10.         {
  11.                 lb_baby=new JLabel(new ImageIcon(Ch01.class.getResource("pic/baby.png")));
  12.                 lb_clock=new JLabel(new ImageIcon(Ch01.class.getResource("pic/clock.png")));
  13.                 lb_girl=new JLabel(new ImageIcon(Ch01.class.getResource("pic/girl.png")));
  14.                 lb_room=new JLabel(new ImageIcon(Ch01.class.getResource("pic/room.jpg")));
  15.                 lb_sofa=new JLabel(new ImageIcon(Ch01.class.getResource("pic/sofa.png")));
  16.                 lb_window=new JLabel(new ImageIcon(Ch01.class.getResource("pic/window.jpg")));
  17.                 lb_baby.setBounds(355, 220, 101, 141);
  18.                 lb_clock.setBounds(420, 15, 106, 106);
  19.                 lb_girl.setBounds(-5, 125, 199, 335);
  20.                 lb_room.setBounds(0, 0, 576, 407);
  21.                 lb_sofa.setBounds(150, 238, 410, 193);
  22.                 lb_window.setBounds(30, 20, 317, 210);

  23.                 lp=new JLayeredPane();
  24.                 lp.setBounds(0, 0, 576, 407);
  25.                 lp.add(lb_room, new Integer(1));
  26.                 lp.add(lb_sofa, new Integer(2));
  27.                 lp.add(lb_window, new Integer(3));
  28.                 lp.add(lb_clock, new Integer(4));
  29.                 lp.add(lb_baby, new Integer(5));
  30.                 lp.add(lb_girl, new Integer(6));

  31.                 fm=new JFrame("jlayeredpane");
  32.                 fm.setBounds(100, 100, 580, 435);
  33.                 fm.setVisible(true);
  34.                 fm.setResizable(false);
  35.                 fm.setLayout(null);
  36.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  37.                 fm.add(lp);      
  38.         }
  39.         public static void main(String[] args) {
  40.                 new Ch01();
  41.         }
  42. }
複製代碼
我是嘉禾豬   我是嘉禾豬   我是嘉禾豬

TOP

  1. import javax.swing.ImageIcon;
  2. import javax.swing.JFrame;
  3. import javax.swing.JLabel;
  4. import javax.swing.JLayeredPane;

  5. public  class Momo {
  6.         JFrame fm;
  7.         JLabel girl, clock, baby, room, window, sofa;
  8.         JLayeredPane jl;
  9.         Momo()
  10.         {
  11.                 girl = new JLabel(new ImageIcon(Momo.class.getResource("pic/girl.png")));
  12.                 baby = new JLabel(new ImageIcon(Momo.class.getResource("pic/baby.png")));
  13.                 room = new JLabel(new ImageIcon(Momo.class.getResource("pic/room.jpg")));
  14.                 window = new JLabel(new ImageIcon(Momo.class.getResource("pic/window.jpg")));
  15.                 sofa = new JLabel(new ImageIcon(Momo.class.getResource("pic/sofa.png")));
  16.                 clock = new JLabel(new ImageIcon(Momo.class.getResource("pic/clock.png")));
  17.                 girl.setBounds(-5, 125, 199, 335);
  18.                 baby.setBounds(355, 220, 101, 141);
  19.                 room.setBounds(0, 0, 576, 407);
  20.                 window.setBounds(30, 20, 317, 210);
  21.                 sofa.setBounds(150, 238, 410, 193);
  22.                 clock.setBounds(420, 15, 106, 106);
  23.                
  24.                 jl = new JLayeredPane();
  25.                 jl.setBounds(0, 0, 576, 407);
  26.                 jl.add(room, new Integer(1));
  27.                 jl.add(window, new Integer(2));
  28.                 jl.add(clock, new Integer(3));
  29.                 jl.add(sofa, new Integer(4));
  30.                 jl.add(baby, new Integer(5));
  31.                 jl.add(girl, new Integer(6));
  32.                
  33.                 fm = new JFrame("JPanel");
  34.                 fm.setBounds(100, 100, 580, 435);
  35.                 fm.setVisible(true);
  36.                 fm.setResizable(false);
  37.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  38.                 fm.setLayout(null);
  39.                 fm.add(jl);
  40.                
  41.         }
  42.         public static void main(String[] args){
  43.                 new Momo();

  44.         }

  45. }
複製代碼

TOP

返回列表