Board logo

標題: JLayeredPane 類別 [打印本頁]

作者: tonyh    時間: 2016-8-6 17:18     標題: JLayeredPane 類別

本帖最後由 tonyh 於 2016-8-8 11:00 編輯

在視窗程式設計中,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

[attach]1683[/attach]
  1. import javax.swing.JFrame;
  2. import javax.swing.JLabel;
  3. import javax.swing.ImageIcon;
  4. import javax.swing.JLayeredPane;

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

  43.         public static void main(String[] args) {
  44.                 new Ch110();
  45.         }

  46. }
複製代碼

作者: 李允軒    時間: 2016-8-6 18:02

  1. import javax.swing.*;
  2. public class Ch01{
  3.         private JFrame fm;
  4.         private JLayeredPane layers;
  5.         private JLabel lb1,lb2,lb3,lb4,lb5,lb6;
  6.        
  7.         Ch01(){
  8.                 lb1=new JLabel(new ImageIcon(Ch01.class.getResource("pic/baby.png")));
  9.                 lb1.setBounds(355, 220, 101, 141);
  10.                 lb2=new JLabel(new ImageIcon(Ch01.class.getResource("pic/clock.png")));
  11.                 lb2.setBounds(420, 15, 106, 106);
  12.                 lb3=new JLabel(new ImageIcon(Ch01.class.getResource("pic/girl.png")));
  13.                 lb3.setBounds(-5, 125, 199, 335);
  14.                 lb4=new JLabel(new ImageIcon(Ch01.class.getResource("pic/room.jpg")));
  15.                 lb4.setBounds(0, 0, 576, 407);
  16.                 lb5=new JLabel(new ImageIcon(Ch01.class.getResource("pic/sofa.png")));
  17.                 lb5.setBounds(150, 238, 410, 193);
  18.                 lb6=new JLabel(new ImageIcon(Ch01.class.getResource("pic/window.jpg")));
  19.                 lb6.setBounds(30, 20, 317, 210);
  20.                
  21.                 layers=new JLayeredPane();
  22.                 layers.setBounds(0, 0, 576, 407);
  23.                 layers.add(lb1, new Integer(5));
  24.                 layers.add(lb2, new Integer(3));
  25.                 layers.add(lb3, new Integer(6));
  26.                 layers.add(lb4, new Integer(1));
  27.                 layers.add(lb5, new Integer(4));
  28.                 layers.add(lb6, new Integer(2));
  29.                
  30.                
  31.         }
  32.        
  33.     public static void main(String args[]){
  34.             Ch01 app=new Ch01();
  35.     }
  36. }
複製代碼

作者: 劉得恩    時間: 2016-8-10 20:52

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

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

  43. }
複製代碼

作者: 張峻瑋    時間: 2016-8-19 22:38

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

作者: 張彥承    時間: 2016-8-20 16:24

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

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

  44.         public static void main(String[] args) {
  45.                     new Ch110();
  46.         }

  47. }
複製代碼

作者: 林宇翔    時間: 2016-8-20 16:36

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

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

  43.         public static void main(String[] args) {
  44.                 new Ch110();
  45.         }

  46. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2