上机题目(初级)- 用数组实现记事本+光标和删除(Java)

Posted yayun0516

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上机题目(初级)- 用数组实现记事本+光标和删除(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.show();
	}

}

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) {
		if(e.getKeyCode()>=KeyEvent.VK_A&&e.getKeyCode()<=KeyEvent.VK_Z){
		chars[size]=e.getKeyChar();
		size++;
		}if(e.getKeyCode()==KeyEvent.VK_LEFT){
			if(size>0){
				size--;
			}
		}if(e.getKeyCode()==KeyEvent.VK_RIGHT){
			if(size<1000){
				size++;
			}
		}
		repaint();
		
	}

	@Override
	public void keyReleased(KeyEvent e) {
		
	}

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

运行实例如下:

技术分享

这个功能还蛮有意思,按左键删除,按右键被删除的字符会重现。

以上是关于上机题目(初级)- 用数组实现记事本+光标和删除(Java)的主要内容,如果未能解决你的问题,请参考以下文章

上机题目(初级)- 键盘控制小球(Java)

上机题目(初级)- 数据库事务(Java)

算法-初级-数组删除排序数组中的重复项(多语言版实现)

LeetCode题目初级解析(数组,排序)

力扣:初级算法——26. 删除排序数组中的重复项

记事本怎么换行