填空题

本题的功能是监听鼠标左右键的单击,以及面板中滚动条的添加。在窗口的画板中单击鼠标左键,在单击的位置绘制一个圆,当绘制的圆大于画板的大小时,画板就添加滚动条,在画板中单击鼠标右键,则清除画板中的所有图形。
import javax. swing. * ;
import javax. swing. event. MouseInputAdapter;
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. orange,
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("单击鼠标左键画圆.");
J Label instructionsRight=new JLabel( "单击鼠标右键清空画板.");
JPanel instructionPanel=new JPanel(new GridLayout(0,1));
instructionPanel. add(instructionsLeft);
instructionPanel. add(instruetionsRight);
drawingArea=new JPanel()
protected void paintComponent(Graphies 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, reet. height);


;
drawingArea. setBackground(Color. white);
drawingArea. addMouseListener(new MouseListener());
JScrollPane scroller=new JScrollPane(drawingArea);
scroller. setPreferredSize(new Dimension(200,200));
setLayout(new BorderLayout());
add(instructionPanel, BorderLayout. NORTH);
add(scroller, BorderLayout. CENTER);

class MyMouseListener extends mouselnputAdapter
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/2;
int y=e. getY()-H/2;
if(x<0) x=0;
if(y<0) y=0;
Rectangle reet=new Rectangle(x, y, W, H);
objects. 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. revalidate();

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())
......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

填空题
本题中,主窗口有一个按钮“打开对话框”和一个文本域,单击按钮“打开对话框”后会弹出一个对话框,对话框上有两个按钮“Yes”和“No”,单击对话框上的“Yes”和“No”按钮后返回主窗口,并在右侧文本域中显示刚才所单击的按钮信息。 import java. awt. event. * ; import java. awt. * ; class MyDialog______implements ActionListener static final int YES=1, NO=0; int message=-1; Button yes, no; MyDialog(Frame f, String s, boolean b) super(f, s, b); yes=new Button( Yes ); yes. addActionListener(this); no=new Button ( No ); no. addActionListener(this); setLayout (new FlowLayout()); add(yes); add(no); setBounds(60,60,100,100); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) message=-1; setVisible(false); ); public void actionPerformed(ActionEvent e) if(e. getSource()=yes) message=YES; setVisible(false); else if(e. getSource()==no) message=NO; setVisible(false); public int getMessage() return message; class Dwindow extends Frame implements ActionListenet TextArea text; Button button; MyDialog dialog; Dwindow(String s) super(s); text=new TextArea(5,22); button=new Button( 打开对话框 ); button. addActionListener(this); setLayout(new FlowLayout()); add(button); add(text); dialog=new MyDialog(this, Dialog , true); setBounds(60,60,300,300); setVisible(true); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System. exit(0); ); public void actionPerformed(ActionEvent e) if(e. getSource()==button) ______; if(dialog, getMessage()==MyDialog. YES) text. append( n你单机了对话框的yes按钮 ); else if(dialog. getMessage()==MyDialog. NO) text. append( n你单机了对话框的No按钮 ); public class java2 public static void main(String args[]) new Dwindow( java2 );