网友您好, 请在下方输入框内输入要搜索的题目:

题目内容 (请给出正确答案)

本题的功能是监听鼠标左右键的单击,以及面板中滚动条的添加。在窗口的画板中单击鼠标左键,在单击的位置绘制一个圆,当绘制的圆大于画板的大小时,画板就添加滚动条,在画板中单击鼠标右键,则清除画板中的所有图形。 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); bjects=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<O)Y=0; 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); } }


参考答案

更多 “ 本题的功能是监听鼠标左右键的单击,以及面板中滚动条的添加。在窗口的画板中单击鼠标左键,在单击的位置绘制一个圆,当绘制的圆大于画板的大小时,画板就添加滚动条,在画板中单击鼠标右键,则清除画板中的所有图形。 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); bjects=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;iobjects.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(x0)x=0; if(yO)Y=0; Rectangle rect=new Rectangle(X,Y,W,H); objeets.addElement(rect); drawingArea.scrollRectToVisible(rect); int this_width=(x+W+2); if(this widthsize.width) {size.width=this_width;changed=true;} int this=height=(y+H+2); if(this_heightsize.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); } } ” 相关考题
考题 在Excel窗口的不同位置,()可以引出不同的块显菜单 A.单击鼠标右键B.单击鼠标左键C.双击鼠标右键D.双击鼠标左键

考题 在瑞星防火墙的窗口中,如发现可疑的进程可()选择“结束此进程”。 A.单击鼠标左键B.单击鼠标右键C.双击鼠标左键D.双击鼠标右键

考题 Word 中的“即点即输”操作是指在文档窗口的空白区域中() A.单击鼠标右键B.双击鼠标左键C.单击鼠标左键D.双击鼠标右键

考题 在Windows中,窗口的控制菜单弹出以后,要恢复原态,则应()。A.在菜单区域内单击鼠标左键B.在菜单区域外单击鼠标左键C.在菜单区域内单击鼠标右键D.在菜单区域外单击鼠标右键

考题 在Windows中,不能进行打开“资源管理器”窗口的操作是(  )。 A.用鼠标右键单击“开始”按钮 B.用鼠标左键单击“任务栏”空白处 C.用鼠标左键单击“开始”菜单中“程序”下的“Windows资源管理器”项 D.用鼠标右键单击“我的电脑”图标

考题 Windows操作系统中,启动程序或窗口,只要()对象的图表即可。 A.用鼠标左键双击 B.用鼠标右键双击 C.用鼠标左键单击 D.用鼠标右键单击

考题 在Window中,排列桌面项目图标的第一步操作是(  )。 A.在任务栏空白区中单击鼠标右键 B.在桌面空白区中单击鼠标右键 C.在桌面空白区中单击鼠标左键 D.在任务栏空白区中单击鼠标左键

考题 在word中,将鼠标指针移到文本左侧的编辑区外,选定行的操作是()。A.单击鼠标左键B.单击鼠标右键C.双击鼠标左键D.双击鼠标右键

考题 1、在“路径”面板中的工作路径上(),会弹出“存储路径”对话框,可存储工作路径。A.单击鼠标左键B.双击鼠标左键C.单击鼠标右键D.双击鼠标右键

考题 4、在“路径”面板中的工作路径上(),会弹出“存储路径”对话框,可存储工作路径。A.单击鼠标左键B.双击鼠标左键C.单击鼠标右键D.双击鼠标右键