【简答题】![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/logo-new-ad743.png)
本题程序的功能是用键盘上的方向键来控制直线的绘制方向。如果一直按向上的方向键,则在窗口中从焦点开始向上缓慢绘制直线,按其他方向的方向键也会向对应的方向缓慢地绘制直线。如果按下Shift键,绘制直线的速度会加快。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt..*;
import javax.swing.*;
public class advance
public static void main(String[] args)
SketchFrame frame = new SketchFrame();
frame.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);
frame,show ();
class SketchFrame extends JFrame
public SketchFrame()
setTitle("advance");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
SketchPanel panel = new SketchPanel();
Container contentPane = getContentPane();
contentPane.add(panel);
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
class SketchPanel extends JPanel
______;
last = new Point2D.Double(100,100);
lines = new ArrayList();
KeyHandler listener = new KeyHandler();
______;
setFocusable(true);
public void add(int dx,int dy)
Point2D end = new Point2D.Double(last.getX()+ dx,last.getY() + dy);
Line2D line = new Line2D.Double(last,end);
lines.add(line);
repaint();
last = end;
public void paintComponent(Graphics g)
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for (int i = 0; i < lines.size(); i++)
g2 .draw ((Line2D) lines .get (i));
private Point2D last;
private ArrayList lines;
private static final int SMALL INCREMENT = i;
private static final int LARGE_INCREMENT = 5;
private class KeyHandler implements KeyListener
public void keyPressed(Key )
______;
int d;
if (.isShiftDown())
d = LARGE_INCREMENT;
else
d = SMALL_INCREMENT;
if(keyCode == Key.VK_LEFT)
add(-d,0);
else
if(keyCode == Key.VK_RIGHT)
add(d,0);
else
if(keyCode == Key.VK_UP)
add(0,-d);
else
if(keyCode == Key.VK DOWN)
add(0,d);
public void keyReleased(Key )
public void keyTyped(Key )
char keyChar = .getKeyChar();
int d;
if (Charaeter.isUpperCase(keyChar))
d = LARGE_INCREMENT;
keyChar = Character.toLowerCase(keyChar);
else
d = SMALL_INCREMENT;
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/content_logo-3-f9358.png)
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA5ElEQVRYR2NkGGDAOMD2M+B0wKpVq9huv/jbxPD/fxwDA4MkhQ59zsDIuEhVgrkuLCzsF7JZOB3QOml5B8P//+UUWoyqnZGxszovsoI4B0xc9gyfzxmZmb2rcsK3IRvWMWm599///7fgcfTz6vwoKWId8B+f75kZGX0q8iK3kugAhur8KJRQxx0FE5fhdQC5UTPqgNEQGA2B0RAYDYHREBgNgaETAuTW96TqG7yt4tbRFhGRIQBqHTP9+8dIoDUMTxqk5AK8zXKYiaDWMYhNpANIaJYPdMdkwLtmpOZnctUPeDkAAP6tmiH1ggTLAAAAAElFTkSuQmCC)
手机使用
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/share-ico-3febd.png)
分享
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/link-f6c98.png)
复制链接
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/weibo-3e538.png)
新浪微博
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/qq-1c308.png)
分享QQ
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/wechat-a78ae.png)
微信扫一扫
微信内点击右上角“…”即可分享
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/report-ico-11843.png)
反馈
![收藏 - 刷刷题](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/coll-ico-cfcc9.png)
收藏
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/jubao-9c477.png)
举报
![刷刷题](https://cdn-fe.shuashuati.com/sst-weixin-xcx/assets/shua/sst_w.png)
参考答案:
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/logo-new-ad743.png)
参考解析:
![](https://cos-cdn.shuashuati.com/shuashuati-web/2024-0521-0905-00/logo-new-ad743.png)