返回列表 發帖

[隨堂測驗] 移動標籤 (一)

不限方法 (實作 KeyListener 介面 或 繼承 KeyAdapter 類別),完成如下圖所示之移動標籤練習,以方向鍵控制標籤朝上下左右移動。

圖片素材:
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

  1. import java.awt.BorderLayout;
  2. import java.awt.EventQueue;

  3. import javax.swing.JFrame;
  4. import javax.swing.JPanel;
  5. import javax.swing.border.EmptyBorder;
  6. import javax.swing.JLabel;
  7. import javax.swing.ImageIcon;
  8. import java.awt.event.KeyAdapter;
  9. import java.awt.event.KeyEvent;


  10. public class Main2 extends JFrame {

  11.         private JPanel contentPane;
  12.         private int x=150,y=150;
  13.         /**
  14.          * Launch the application.
  15.          */
  16.         public static void main(String[] args) {
  17.                 EventQueue.invokeLater(new Runnable() {
  18.                         public void run() {
  19.                                 try {
  20.                                         Main2 frame = new Main2();
  21.                                         frame.setVisible(true);
  22.                                 } catch (Exception e) {
  23.                                         e.printStackTrace();
  24.                                 }
  25.                         }
  26.                 });
  27.         }

  28.         /**
  29.          * Create the frame.
  30.          */
  31.         public Main2() {
  32.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  33.                 setBounds(100, 100, 450, 300);
  34.                 contentPane = new JPanel();
  35.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  36.                 setContentPane(contentPane);
  37.                 contentPane.setLayout(null);
  38.                
  39.                 JLabel label = new JLabel("");
  40.                 label.setIcon(new ImageIcon("C:\\Users\\student\\Downloads\\box.png"));
  41.                 label.setBounds(x, y, 45, 40);
  42.                 contentPane.add(label);
  43.                 addKeyListener(new KeyAdapter() {
  44.                         @Override
  45.                         public void keyPressed(KeyEvent arg0) {
  46.                                 System.out.println(arg0.getKeyCode() == KeyEvent.VK_UP);
  47.                                 if(arg0.getKeyCode() == KeyEvent.VK_UP)
  48.                                 {
  49.                                         y+=10;
  50.                                 }if(arg0.getKeyCode() == KeyEvent.VK_DOWN)
  51.                                 {
  52.                                         y-=10;
  53.                                 }if(arg0.getKeyCode() == KeyEvent.VK_LEFT)
  54.                                 {
  55.                                         x-=10;
  56.                                 }if(arg0.getKeyCode() == KeyEvent.VK_RIGHT)
  57.                                 {
  58.                                         x+=10;
  59.                                 }
  60.                                 label.setLocation(x, y);
  61.                         }
  62.                 });
  63.                
  64.         }
  65. }
複製代碼

TOP

  1. package tw.kuas.edu.tw;

  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;

  4. import javax.swing.JFrame;
  5. import javax.swing.JPanel;
  6. import javax.swing.border.EmptyBorder;
  7. import javax.swing.JLabel;
  8. import javax.swing.ImageIcon;
  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;

  11. public class BLOCK extends JFrame {

  12.         private JPanel contentPane;
  13.         private int x=64;
  14.         private int y=64;

  15.         /**
  16.          * Launch the application.
  17.          */
  18.         public static void main(String[] args) {
  19.                 EventQueue.invokeLater(new Runnable() {
  20.                         public void run() {
  21.                                 try {
  22.                                         BLOCK frame = new BLOCK();
  23.                                         frame.setVisible(true);
  24.                                 } catch (Exception e) {
  25.                                         e.printStackTrace();
  26.                                 }
  27.                         }
  28.                 });
  29.         }

  30.         /**
  31.          * Create the frame.
  32.          */
  33.         public BLOCK() {
  34.                 setTitle("\u79FB\u52D5\u6A19\u7C64");
  35.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  36.                 setBounds(100, 100, 450, 300);
  37.                 contentPane = new JPanel();
  38.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  39.                 setContentPane(contentPane);
  40.                 contentPane.setLayout(null);
  41.                 JLabel block = new JLabel("");
  42.                 block.setIcon(new ImageIcon("C:\\Users\\redab\\Downloads\\box.png"));
  43.                 block.setBounds(x, y, 48, 48);
  44.                 contentPane.add(block);
  45.                
  46.                 block.addKeyListener(new KeyAdapter() {
  47.                         @Override
  48.                         public void keyPressed(KeyEvent arg0) {                               
  49.                                 if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
  50.                                         x-=15;
  51.                                 if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
  52.                                         x+=15;
  53.                                 if(arg0.getKeyCode()==KeyEvent.VK_UP)
  54.                                         y-=15;
  55.                                 if(arg0.getKeyCode()==KeyEvent.VK_DOWN)
  56.                                         y+=15;
  57.                                 block.setLocation(x, y);
  58.                         }
  59.                 });
  60.                
  61.         }
  62. }
複製代碼

TOP

package bbs.istak.org.tw;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


public class Main extends JFrame {

        private JPanel contentPane;
        private int x=150,y=150;
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
                EventQueue.invokeLater(new Runnable() {
                        public void run() {
                                try {
                                        Main frame = new Main();
                                        frame.setVisible(true);
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                });
        }

        /**
         * Create the frame.
         */
        public Main() {
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setBounds(100, 100, 450, 300);
                contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);
               
                JLabel label = new JLabel("");
                label.setIcon(new ImageIcon(Main.class.getResource("/bbs/istak/org/tw/box.png")));
                label.setBounds(x, y, 45, 40);
                contentPane.add(label);
                addKeyListener(new KeyAdapter() {
                        @Override
                        public void keyPressed(KeyEvent arg0) {
                                System.out.println(arg0.getKeyCode() == KeyEvent.VK_UP);
                                if(arg0.getKeyCode() == KeyEvent.VK_UP)
                                {
                                        y-=10;
                                }if(arg0.getKeyCode() == KeyEvent.VK_DOWN)
                                {
                                        y+=10;
                                }if(arg0.getKeyCode() == KeyEvent.VK_LEFT)
                                {
                                        x-=10;
                                }if(arg0.getKeyCode() == KeyEvent.VK_RIGHT)
                                {
                                        x+=10;
                                }
                                label.setLocation(x, y);
                        }
                });
               
        }
}

TOP

  1. package asdf;
  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;
  4. import javax.swing.JFrame;
  5. import javax.swing.JPanel;
  6. import javax.swing.border.EmptyBorder;
  7. import javax.swing.JLabel;
  8. import javax.swing.ImageIcon;
  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;
  11. public class Asdf extends JFrame {

  12.         private JPanel contentPane;
  13.         private int x=150,y=150;
  14.         public static void main(String[] args) {
  15.                 EventQueue.invokeLater(new Runnable() {
  16.                         public void run() {
  17.                                 try {
  18.                                             Asdf frame = new Asdf();
  19.                                         frame.setVisible(true);
  20.                                 } catch (Exception e) {
  21.                                         e.printStackTrace();
  22.                                 }
  23.                         }
  24.                 });
  25.         }
  26.         public Asdf() {
  27.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.                 setBounds(100, 100, 450, 300);
  29.                 contentPane = new JPanel();
  30.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  31.                 setContentPane(contentPane);
  32.                 contentPane.setLayout(null);
  33.                
  34.                 JLabel label = new JLabel("");
  35.                 label.setIcon(new ImageIcon("C:\\Users\\Downloads\\box.png"));
  36.                 label.setBounds(x, y, 45, 40);
  37.                 contentPane.add(label);
  38.                 addKeyListener(new KeyAdapter() {
  39.                         @Override
  40.                         public void keyPressed(KeyEvent arg0) {
  41.                                 System.out.println(arg0.getKeyCode() == KeyEvent.VK_UP);
  42.                                 if(arg0.getKeyCode() == KeyEvent.VK_UP)
  43.                                 {
  44.                                         y+=10;
  45.                                 }if(arg0.getKeyCode() == KeyEvent.VK_DOWN)
  46.                                 {
  47.                                         y-=10;
  48.                                 }if(arg0.getKeyCode() == KeyEvent.VK_LEFT)
  49.                                 {
  50.                                         x-=10;
  51.                                 }if(arg0.getKeyCode() == KeyEvent.VK_RIGHT)
  52.                                 {
  53.                                         x+=10;
  54.                                 }
  55.                                 label.setLocation(x, y);
  56.                         }
  57.                 });               
  58.         }
  59. }
複製代碼
我是眾神之王XXX  I love you
0000000000

TOP

  1. package bbs.istak.org.tw;

  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;

  4. import javax.swing.JFrame;
  5. import javax.swing.JPanel;
  6. import javax.swing.border.EmptyBorder;
  7. import javax.swing.JLabel;
  8. import javax.swing.ImageIcon;
  9. import java.awt.event.KeyAdapter;
  10. import java.awt.event.KeyEvent;

  11. public class Main extends JFrame {

  12.         private JPanel contentPane;

  13.         /**
  14.          * Launch the application.
  15.          */
  16.         public static void main(String[] args) {
  17.                 EventQueue.invokeLater(new Runnable() {
  18.                         public void run() {
  19.                                 try {
  20.                                         Main frame = new Main();
  21.                                         frame.setVisible(true);
  22.                                 } catch (Exception e) {
  23.                                         e.printStackTrace();
  24.                                 }
  25.                         }
  26.                 });
  27.         }

  28.         /**
  29.          * Create the frame.
  30.          */
  31.         public Main() {
  32.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  33.                 setBounds(100, 100, 476, 375);
  34.                 contentPane = new JPanel();
  35.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  36.                 setContentPane(contentPane);
  37.                 contentPane.setLayout(null);
  38.                
  39.                 JLabel lblNewLabel = new JLabel("");
  40.                 lblNewLabel.setIcon(new ImageIcon(Main.class.getResource("/bbs/istak/org/tw/box.png")));
  41.                 lblNewLabel.setBounds(99, 105, 46, 44);
  42.                 contentPane.add(lblNewLabel);
  43.                 addKeyListener(new KeyAdapter() {
  44.                         @Override
  45.                         public void keyPressed(KeyEvent arg0) {
  46.                                 int x = lblNewLabel.getLocation().x;
  47.                                 int y = lblNewLabel.getLocation().y;
  48.                                 switch(arg0.getKeyCode())
  49.                                 {
  50.                                     case 38:
  51.                                         y-=5;
  52.                                             break;
  53.                                     case 40:
  54.                                             y+=5;
  55.                                             break;
  56.                                     case 37:
  57.                                             x-=5;
  58.                                             break;
  59.                                     case 39:
  60.                                             x+=5;
  61.                                             break;
  62.                                     default:
  63.                                             break;
  64.                                 }
  65.                                 lblNewLabel.setLocation(x, y);
  66.                         }
  67.                 });
  68.         }
  69. }
複製代碼

TOP

返回列表