题库 题库

【简答题】

本题的功能是监听鼠标左右键的单击,以及面板中滚动条的添加。在窗口的画板中单击鼠标左键,在单击的位置绘制一个圆,当绘制的圆大于画板的大小时,画板就添加滚动条,在画板中单击鼠标右键,则清除画板中的所有图形。
import javax.swing.*;
import javax.swing.event.MouselnputAdapter;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class java3 extends JPanel{
private Dimension size;
private Vector objects;
private final Color colors[]={
Color.red,Color.blue,Color.green,Color.or-
ange,
Color.cyan,Color.magenta,Color.darkGray,
Color.yellow);
private final int color_n=colors.length;
JPanel drawingArea;
public java3(){
setopaque(true);
size=new Dimension(0,0);
objects=new Vector();
JLabel instructionsLeft=new JLabel("单击鼠标
左键画圆.");
JLabel instructionsRight=new JLabel("单击鼠
标右键清空画板.");
JPanel instructionPanel=new JPanel(new Grid-
Layout(0,1));
instructionPanel.add(instructionsLeft);
instructionPanel.add(instructionsRight);
drawingArea=new JPanel(){
protected void paintComponent(Graphics g){
super.paintComponent(g);
Rectangle rect;
for(int i=0;i<OBJECTS.SIZE();I++){
rect=(Rectangle)objects.elementAt(i):
g.setColor(colors[(i%color_n)]);
g.fillOval(rect.X,rect.Y,rect.width,rect.
height);
}
}
};
drawingArea.setBackground(Color.white);
drawingArea.addMouseListener(new MouseLis-
tener());
JScrollPane scroller=new JScrollPane(drawing-
Area);
scroller.setPreferredSize(new Dimension(200,
200));
setLayout(new BorderLayout());
add(instructionPanel,BorderLayout.NORTH);
add(scroller,BorderLayout.CENTER):
}
class MyMouseListener extends mouseInputAdapt-
er{
final int W=100;
final int H=100;
public void mouseReleased(MouseEvent e){
boolean changed=false;
if(SwingUtilities.isRightMouseButton(e)){
objects.removeAllElements();
size.width=0;
size.height=0;
changed=true;
}else{
int X=e.getX()-W/z;
int Y=e.getY()-H/2
if(x<0)x=0;
if(y
Rectangle rect=new Rectangle(X,Y,W,H);
objeets.addElement(rect);
drawingArea.scrollRectToVisible(rect);
int this_width=(x+W+2);
if(this width>size.width)
{size.width=this_width;changed=true;}
int this=height=(y+H+2);
if(this_height>size.height)
{size.height=this_height;changed=true;}
}
if(changed){
drawingArea.setPreferredSize(size);
drawingArea.revalidateI();
}
drawingArea.paint();
}
}
public static void main(String args[]){
JFrame frame=new JFrame("java3"):
frame.addWindowListener(new WindowAdapter
(){
public void windowClosing(WindowEvent e)
{System.exit(0);}
});
frame.setContentPane(new java3());
frame.pack();
frame.setVisible(true);
}
}

参考答案

第1处:DrAwinGArEA.ADDMousEListEnEr(nEw MyMousEListEnEr())
第2处:ClAss MyMousEListEnEr Ex{CEnDs MousElnputADAptEr
第3处:DwAwinGArEA.rEpAint()

相关试题

单选题 下列代码中,将引起编译错误的行是(  )。
1)public class Exercise{
2)public static void main(String args[]){
3)floatf=0.0;
4)f+=1.0:
5))
6))
查看答案
单选题 使用白盒测试法时,确定测试数据应该根据(  )和指定的覆盖标准。 查看答案
单选题 下列代码的执行结果是(  )。
int numbers[]=new int[6];
for(int i=1;i<NUMBERS.LENGTH;I++){
numbers[[i]=i-1 ;
Systern.OUt.print(numbers[I]+"");
查看答案
单选题 下列叙述中,不属于测试的特征的是(  )。 查看答案
单选题 有两个关系R、S如下:

由关系R通过运算得到关系S,则所使用的运算为(  )。
查看答案
单选题 设计程序时,应采纳的原则之一是(  )。 查看答案
单选题 16根地址总线的寻址范围是(  )。 查看答案
单选题 在一个线程中调用下列方法,不会改变该线程运行状态的是(  )。 查看答案
单选题 请阅读下面程序
public class ThreadTest{
public static void main(String args[])throws Ex-
ception{
int i=0;
Hello t=new Hello();

while(true){
System.Out.println("Good Morning"+i++):
if(i= =2&&t.isAlive()){
System.out.println("Main waiting for Hel-
lo!");
join();//等待t运行结束
}
if(i= =5)break;}
}
}
class Hello extends Thread{
int l;
public void run(){
while(true)(
System.Out.println("Hell0"+i++);
if(i= =5)break;)))
查看答案
单选题 耦合性和内聚性是对模块独立性度量的两个标准,下列叙述中正确的是(  )。 查看答案
单选题 下列不属于接口WindowListener的方法是(  )。 查看答案
单选题 下列特征中不是面向对象方法的主要特征的是(  )。 查看答案
单选题 Frame默认的布局管理器是(  )。 查看答案
单选题 下列程序的运行结果是(  )。
Public class sun
{
Public static void main(String args[])
{
int x=4,y=0;
if(Math.pow(X,2)= =16)
y—x ;
if(Math.pow(X,2)<15)
y—l/x;
if(Math.pow(X,2)>15)
y=(int)Math.pow(X,2)+1;
system.out.println(y);
}
}
查看答案
单选题 用于在子类中调用被重写父类方法的关键字是(  )。 查看答案
单选题 设a=8,则表达式a>>>2的值是(  )。 查看答案
单选题 下列代码的下画线处应填入的方法名是(  )。
import java.awt.*;
import java.applet.*;
public class Hello extends Applet{
public void (Graphics g){
9.drawstring("How are you!",l0,10);
}
}
查看答案
单选题 下列叙述中正确的是(  )。 查看答案
单选题 执行下面程序段的输出结果为(  )。
public class Q
{
public static void main(String argv[])
{
int anar[]一new int[5];
System.out.println(anar[0]);
}
}
查看答案
单选题 在多线程程序设计中,如果采用继承Thread类的方式创建线程,则需要重写Thread类的(  )方法。 查看答案