问答题

本题的功能是求两个交叉图形的并、减、交和异或。窗口中有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);
areal
=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);
JPanel 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(AetionEvent event)
area=new Area();
area.add(area1);
area.add(area2);
panel.repaint();
);
JRadioButton subtractButton
=new JRadioButton("减",false);
buttonPanel.add(subtractButton);
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(intersectButton);
group.add(intersectButton);
intersectButton.addActionListener(new
ActionListener()
public void actionPerformed(ActionEvent event)
area=new Area();
area.add(area1);
area.interseet(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.su......

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