问题 填空题

本题的功能是求两个交叉图形的并、减、交和异或。窗口中有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 AreaTestFrame();
frame. setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE);
frame. show();


class AreaTestFrame extends JFrame

public AreaTestFrame()

setTitle("java3");
setSize(WIDTH, HEIGHT);
area1
=new Area (new Ellipse2D. Double(100,100,150,100));
area2
= new Area(new Rectangle2D. Double(150,150,150,100));
Container confentPane=getContentpane();
panel=new
JPanel()

public void paintComponent(Graphics g)

super, paintComponent(g);
Graphics2D g2=(Graphics2D)g;
g2. draw(area1);
g2. draw(area2);
if(area!=null) g2. fill(area);

;
contentPane, add (panel, BorderLayout. CENTER);
JPaneI buttonPanel=new JPanel();
ButtonGroup group=new ButtonGroup();
JRadioButton addButton=new JRadioButton("并", false);
buttonPanel. add(addButton);
group. add(addButton);
addButton. addActionListener(new
ActionListener()

public void actionPerformed(ActionEvent event)

area=new Area();
area. add(area1);
area. add(area2);
panel. repaint();

);
JRadioButton subtractButton
=new JRadioButton("减", false);
buttonPanel. add(subtraetButton);
group. add(subtractButton);
subtractButton. addActionListener(new ActionListener()

public void actionPerformed(ActionEvent event)

area=new Area();
area. add(area1);
area. subTract(area2);
panel, repaint();

);
JRadioButton intersectButton
=new JRadioButton("交", false);
buttonPanel. add(interseetButton);
group. add(intersectButton);
intersectButton. addActionListener(new
ActionListener()

public void actionPerformed(AetionEvent event)

area=new Area();
area. add(area1);
area. intersect(area2);
panel. repaint();

);
JRadioButton exclusiveOrButton
=new JRadioButton("异或", false);
buttonPanel. add(exclusiveOrButton);
group. add(exclusiveOrButton);
exclusiveOrButton, addActionListener (new ActionListener()

public void actionPerformed(ActionEvent event)

area=new Area();
area. add(area1);
area. exclusiveor(area2);
panel, repaint();

);
contentPane, add(buttonPanel, BorderLayout. NORTH);

private JPanel panel;
private Area area;
private Area area1;
private Area area2;
private static final int WIDTH=400;
private static final int HEIGHT=400;

答案

参考答案:第1处:Container contentPane=getContentPane()
第2处:area. subtract(area2)
第3处:area. exelusiveOr(area2)

解析: 第1处用getContentPane()获得内容面板;第2处表示从area形状中减去area2形状;第3处将area设置为area形状和area2形状的组合,并减去相交部分。

问答题 简答题
单项选择题