欢迎来到牛牛题库网 牛牛题库官网
logo

问答题

问答集
【参考答案】

0

点击查看答案

相关考题

问答题
本题程序的功能是用键盘上的方向键来控制直线的绘制方向。如果一直按向上的方向键,则在窗口中从焦点开始向上缓慢绘制直线,按其他方向的方向键也会向对应的方向缓慢地绘制直线。如果按下Shift键,绘制直线的速度会加快。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.awt.event.*;
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(KeyEvent event)
{
______;
int d;
if (event.isShiftDown())
d = LARGE_INCREMENT;
else
d = SMALL_INCREMENT;
if(keyCode == KeyEvent.VK_LEFT)
add(-d,0);
else
if(keyCode == KeyEvent.VK_RIGHT)
add(d,0);
else
if(keyCode == KeyEvent.VK_UP)
add(0,-d);
else
if(keyCode == KeyEvent.VK DOWN)
add(0,d);
}
public void keyReleased(KeyEvent event)
{
}
public void keyTyped(KeyEvent event)
{
char keyChar = event.getKeyChar();
int d;
if (Charaeter.isUpperCase(keyChar))
{
d = LARGE_INCREMENT;
keyChar = Character.toLowerCase(keyChar);
}
else
d = SMALL_INCREMENT;
}
}
}
问答题
本题程序的功能是定义一个简单的计算器,可以进行基本的四则运算。程序中布局了16个按钮用来表示数字0~9及运算符和点号,程序顶部的文本框用来显示运算数及结果。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class simple
{
public static void main (String[] args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
}
JFrame frame = new CalculatorFrame();
frame.show();
}
}
class CalculatorPanel extends JPanel implements ActionListener
{
private JTextField display;
private JButton btn;
private double arg = 0;
private String op = "=";
private boolean start = true;
public CalculatorPanel()
{
setLayout(new BorderLayout());
display = new JTextField("0");
display.setEditable(false);
add(display,"North");
JPanel p = new JPanel();
p.setLayout(new GridLayout(4,4));
String buttons = "789/456"123-0.= +";
for (int i = 0; i < buttons.length(); i ++)
{
btn = new JButton(buttons.substring(i,i + 1));
p.add(btn);
______;
}
add(p,"Center");
}
public void actionPerformed(ActionEvent evt)
{
String s = evt.getActionCommand();
if ("0"< = s.charAt(0)&&s.charAt(0) <="9" ||s.equals("."))
{
if (start)
display.setText(s);
else
display.setText(display.getText() + s);
start = false;
}
else
if (start)
{
if (s.equals("-"))
{
display.setText(s);
start = false;
}
else
op = s;
}
else
{
double x =______;
calculate(x);
op = s;
start = true;
}
}
}
public void calculate(double n)
{
if (op.equals(" + "))
arg += n;
else
if(op.equals("-"))
arg - = n;
else
if(op.equals("*"))
arg *= n;
else
if(op.equals("/"))
arg /= n;
else
if(op.equals("="))
arg=n;
display.setText(""+ arg);
}
}
class CalculatorFrame extends Jframe
{
public CalculatorFrame()
{
setTitle("simple");
setSize(220,180);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
Container contentPane=getContentPane();
contentPane.add(new CalculatorPanel());
}
}
微信小程序免费搜题
微信扫一扫,加关注免费搜题

微信扫一扫,加关注免费搜题