问答题
本题程序的功能是求两个交叉图形的并、减、交及异或。窗口中有4个单选按钮和一个图形面板,面板中有两个交叉的图形,选中其中一个单选按钮,图形面板中会以黑色填充的方式显示运算的结果。请将下述程序补充完整(注意:不得改动程序的结构,不得增行或删行)。
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;
public class advance
{
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("advance");
setSize(WIDTH,HEIGHT);
area1 = new Area(new Ellipse2D.Double(100,100,150,100));
area2 = new Area(new Rectangle2D.Double(150,150,150,100));
______;
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 addButtoh = 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(subtractButton);
group.add(subtractButton);
subtractButton.addActionListener(new ActienListener(){
public void actionPerformed(ActionEvent event)
{
area = new Area();
area.add(areal);
______;
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.intersect(area2);
panel.repaint();
}
});
JRadioButten 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);
______;
panel,repaint ();
}
});
contentPane.add(buttonPanel,BorderLayout.NORTH);
}
private JPanel pane1;
private Area area;
private Area area1;
private Area area2;
private static final int WIDTH = 400;
private static final int HEIGHT = 400;