题库 题库

【简答题】

本题的功能是对图形进行操作,包括旋转、移位、放大和剪切。窗口中有4个单选按钮和一个图形面板,图形面板中有一个矩形和该矩形移位操作后的图形,任选其中一个单选按钮,则图形面板中将显示该操作后的图形。
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class java3
{
public static void main(String[]args)
{
JFrame frame=new TransformTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_
0N_CLoSE);
frame.show();
}
}
class TransformTest extends JFrame
{
public TransformTestFrame()
{
setTitle("java3");
setSize(WIDTH,HEIGHT);
Container contentPane=getContentPane();
canvas=new TransformPanel();
contentPane.add(canvas,BorderLayout.CEN-
TER);
JPanel buttonPanel=new JPanel():
ButtonGroup group=new ButtonGroup();
JRadioButton rotateButton
=new JRadioButton("旋转",true);
buttonPanel.add(rotateButton);
group.add(rotateButton);
rotateButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
canvas.setRotate();
}
});
JRadioButton trans|ateButton
=new JRadioButton("移位",false);
buttonPanel.add(translateButton);
group.add(translateButton);
translateButton.addActionListener(new
ActionLiatener()
public void actionPerformed(ActionEvent event)
{
canvas.setTranslate();
}
});
JRadioButton scaleButton
=new JRadioButton("放大",false);
buttonPanel.add(scaleButton):
group.add(scaleButton);
scaleButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
canvas.setScale();
}
});
JRadioButton shearButton
=new JRadioButton("剪切",false);
buttonPanel.add(shearButton):
group.add(shearButton);
shearButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
canvas.setShear();
}
});
contentPane.add(buttonPanel,BorderLayout.
NORTH):
}
private TransformPanel canvas;
private static final int WIDTH=300;
private static final int HEIGHT=300;
}
class TransformPanel extend JPanel
{
public TransformPanel()
{
square=new Rectangle2D.Double(-50,-50,
100,100);
t = new AffineTransform();
setRotate();
}
public void paintComponent()
{
super.paintComponent(g);
Graphics2D g2=(Graphies2D)g;
g2.translate(getWidth()/2,getHeight()/2):
g2.setPaint(Color.gray);
g2.draw(square);
g2.transform(t);
g2.setPaint(Color.black);
g2.draw(square);
}
public void setRotate()
{
t.setToRotation(Math.toRadians(30));
repaint();
}
public void setTranslate()
{
t.setToTranslation(20,1 5);
repaint();
}
public void setScale()
{
t.setToScale(2.0,1.5):
repaint();
}
public void setShear()
{
t.setToShear(-0.2,O);
repaint();
}
private Rectangle2D square;
private AffineTransform t;
}

参考答案

第1处:ClAss TrAnsFormTEstFrAmE ExtEnDs JFrAmE
第2处:ClAss TrAnsFormPAnEl ExtEnDs JFrAmE
第3处:puBliC voiD pAintComponEnt(GrAphiCs G)

相关试题

单选题 鼠标在窗口中移动时,产生的事件是(  )。 查看答案
单选题 用鼠标单击菜单项(Menultem)产生的事件是(  )。 查看答案
单选题 有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为(  )。
查看答案
单选题 对于循环队列,下列叙述中正确的是(  )。 查看答案
单选题 以下程序计算1+1/3+1/5+…+1/(2N+1),直至1/(2N+1)小于0.00001,横线处应补充的程序是(  )。
public class Sun{
public static void main(String args[]){
int n=1:
double term,sum=1.0:
do{
n= __ ;
term=1.0/n;
sum=sum+term;
}
while(term>=0.00001);
System.out.println(n);
System.out.println(sum);
}
}
查看答案
单选题 下列选项中为单精度数的是(  )。 查看答案
单选题 阅读下面程序
1 public class Try extends Thread{
2 public static void main(String args[]){
3Try t=new Try();
4 t.start();
5}
6
7 public void run(intj){
8 inti=0;
9 while(i<5){
10 System.out.println("祝你成功!");
11 i++:
12}
13}
14}
该程序要求打印5行"祝你成功!",必须改正程序中的某行代码,程序才能完成。选择正确的修改是(  )。
查看答案
单选题 下列程序实现对ZIP文件file.zip的检索,在横线处填入正确的语句(  )。
package test;
importjava.io.*;
import java.util.*;
import java.util.zip.*;
public class Exam
{
public static void main(String[]args){
try{
FileInputStream fis=new FileInputStream("test/file.
zip");
ZipInputStream zis=new ZiplnputStream(fis);
ZipEntry an;
while((                )!=null){
en.getName();
zis.closeEntry();
}
zis.close():
}
catch(Exception e){
printStackTrace();
}
}
}
查看答案
单选题 为使下列代码正常运行,应该在下画线处填入的选项是(  )。
int[]numbers=new int[n];
for(int i=0;i<NUMBERS.      ;i++)
numbers[i]=i+1:
查看答案
单选题 下列关于Applet的叙述中,正确的是(  )。 查看答案
单选题 阅读下列代码片段
class InterestTest——ActionListener{
public"void actionPerformed(ActionEvent event){
double interest=balance*rate/1 00 ;
balance+=interest;
NumberFormat format=NumberFormat.getCur-
rencyInstance();
System.OUt.print]b("balance="+formatter.
format(balance));
}
Private double rate;
}
在下画线处,应填的正确选项是(  )。
查看答案
单选题 当一个Applet被加载,后续对Applet生命周期方法的调用中,可能存在的次序是(  )。 查看答案
单选题 一间宿舍可住多个学生,则实体宿舍和学生之间的联系是(  )。 查看答案
单选题 为保护本地主机,对Applet安全限制中正确的是(  )。 查看答案
单选题 下面的(  )关键字通常用来对对象加锁,从而使得对对象的访问是排他的。 查看答案
单选题 下列叙述中正确的是(  )。 查看答案
单选题 下列关于完全二叉树的叙述中,错误的是(  )。 查看答案
单选题 使下列程序正常运行并且输出“Hello!”,横线处应填写的内容是(  )。
class Test      {
public static void main(string[]args){
Test t=new Test();
start();
}
Public void run(){
System.out.println("Hello!¨);
)
查看答案
单选题 数据流程图(DFD图)是( )。 查看答案
单选题 下列与其他选项不相等的是(  )。 查看答案