首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

上機實戰(初級):記事本進階——光標移動與字符刪除

     編輯:Java 綜合教學

上機實戰(初級):記事本進階——光標移動與字符刪除

在上一節基礎上,新增光標顯示、左右方向鍵移動光標及刪除/恢復字符功能。

增強後的關鍵代碼

package com.java.test;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Book {
    public static void main(String[] args) {
        JFrame jFrame = new JFrame();
        jFrame.setSize(300, 500);
        MyPanel myPanel = new MyPanel();
        jFrame.add(myPanel);
        jFrame.addKeyListener(myPanel);
        myPanel.addKeyListener(myPanel);
        jFrame.setVisible(true);
    }
}

class MyPanel extends JPanel implements KeyListener {
    char[] chars = new char[1000];
    int size = 0; // 兼作光標位置

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        for (int i = 0; i < size; i++) {
            g.drawString(chars[i] + "", 10 + 8 * i, 10);
        }
        // 繪製光標
        g.drawLine(10 + size * 8, 0, 10 + size * 8, 10);
    }

    @Override
    public void keyPressed(KeyEvent e) {
        int code = e.getKeyCode();
        // 字母鍵錄入
        if (code >= KeyEvent.VK_A && code <= KeyEvent.VK_Z) {
            chars[size] = e.getKeyChar();
            size++;
        }
        // 左鍵:光標左移(相當於刪除)
        if (code == KeyEvent.VK_LEFT) {
            if (size > 0) size--;
        }
        // 右鍵:光標右移(恢復被刪字符)
        if (code == KeyEvent.VK_RIGHT) {
            if (size < 1000) size++;
        }
        repaint();
    }

    @Override public void keyReleased(KeyEvent e) {}
    @Override public void keyTyped(KeyEvent e) {}
}

運行演示

光標與刪除演示

按左鍵即刪除,按右鍵被刪字符重現,頗具趣味。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved