11[簡答題]
本題的功能是定義圖形按鈕。窗口中有兩個圖形按鈕,當鼠標移上去時,圖形按鈕的圖形將改變,用鼠標單擊按鈕時圖形按鈕的圖形又發(fā)生改變,當鼠標左鍵松開或者移開鼠標后,圖形按鈕的圖形又恢復原樣。
import javax.swing.*;
import java.a(chǎn)wt.*;
public class java3 extend Jbutton{
public java3(Icon icon,Icon pressed,Icon rollover){
this(icon);
setFocusPainted(false);
setRolloverEnabled(true);
setRolloverlcon(rollover);
setPressedIcon(pressed);
setBorderPainted(false);
setContentAreaFilled(false);
}
public static void main(String[]args){
java3 b1=new java3(
new ImageIcon("java3-redcube.gif"),
new ImageIcon("java3-redpaw.gif"),
new ImageIcon("java3-reddiamond.gif"));
java3 b2一new java3(
new ImageIcon("java3-bluecube.gif")。
new ImageIcon("java3-bluepaw.gif"),
new ImageIcon("java3-bluediamond.gif"));
JFrame f=new JFrame();
f.setTitle("java3");
f.setDefauhCloseOperation(JFrame.EXIT_ON_
CLOSE);
c=f.getContentpane();
c.setLayout(new FlowLayout());
c.a(chǎn)dd(b1);
c.a(chǎn)dd(b2);
f.pack();
f.setVisible(true);
12[簡答題]
本題的功能是監(jiān)聽對于列表項的操作。窗口中有一個列表和三個按鈕“添加”、“刪除”和“關(guān)閉”。單擊“添加”按鈕,則會在當前所選列表項后添加一個名為“新增表項”的列表項,同時后臺輸入列表中的表項數(shù)量。單擊“刪除”按鈕后,如果未選中表項,則彈出提示消息框“請選擇表項”。否則將選中的表項刪除,同時后臺輸出刪除表項的內(nèi)容和列表中的表項數(shù)量。單擊“關(guān)閉”按鈕退出程序。
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.event.*;
import javax.swing.JOptionPane;
public class java3
{
public static void main(String args[])
{
final Frame frmFrame=new Frame();
Panel pnlPanell=new Panel();
Panel pnlPanel2=new Panel();
final List lstList=new List(8):
for(int i=0;i<10;i++)
{
String strName="表項"+(new Integer(i+
1)).toString():
lstList.a(chǎn)dd(strName);
}
Button btnButtonl=new Button("添加");
Button btnButton2=new Button("刪除");
Button btnButton3=new Button("關(guān)閉");
btnButtonl.a(chǎn)ddActionListener(new AetionListen-
er()
{
public void actionPerformed(ActionEvent e)
{
lstList.a(chǎn)dd("新增表項",lstList.getSelected()+
1);
System.out.println("列表中的表項數(shù)量:"+
lstList.getItemCount());
}
});
btnButton2.a(chǎn)ddActionListener(new ActionListen-
er()
{
public void aetionPerformed(ActionEvent e)
{
if(lstList.getSelected()= =null)
{
JOptionPane.showMessageDialog(frmFrame,"請
選擇表項");
return;
}
System.out.println("刪除表項的內(nèi)容:"+
IstList.getSelectedItem());
lstList.delete(lstList,getSelectedIndex());
System.out.println("列表中的表項數(shù)量:"+
lstList.getltemCount()):
}
});
btnButton3.a(chǎn)ddActionListener(new ActionListen-
er()
{
public void actionPerformed(ActionEvent e)
{
System.exit(O);
}
});
pnlPanell.a(chǎn)dd(lstList);
pnlPanel2.a(chǎn)dd(btnButtonl);
pnlPanel2.a(chǎn)dd(btnButton2);
pnlPanel2.a(chǎn)dd(btnButton3);
frmFrame.a(chǎn)dd("North",pnlPanell);
frmFrame.a(chǎn)dd("South",pnlPanel2);
frmFrame.setTitle("java3");
frmFrame.pack();
frmFrame.show();
}
}
13[簡答題]
本題的功能是用復選按鈕來控制鼠標右鍵的彈出菜單是否彈出。窗口中有一個復選按鈕“彈出菜單”,如果選中該復選按鈕后,鼠標置于窗口上,單擊鼠標右鍵會彈出一個菜單,單擊菜單項中的選項后,后臺會輸出單擊的菜單項,如果取消該復選按鈕的選擇,單擊鼠標右鍵則不能彈出菜單。
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.event.*;
class CanvasWithPopup extends Canvas{
Popupmenu popup;
CanvasWithPopup(PopupMenu popup){
enableEvents(AWTEvent.MOUSE EVENT
MASK):
this.popup=popup;
}
void addPopup(){
add(popup);
}
void removePopup(){
remove(popup);
}
protected void processMouseEvent(MouseEvent
evt){
if(popup.getParent()!=null&&evt.isPop-
upTrigger()){
popup.show(evt.getComponent(),evt.getX(),
evt.getY());
}
super.processMouseEvent(evt);
}
}
public class java3 extends Frame implements Item-
Listener,ActionListener{
Checkbox cb=new Checkbox("彈出菜單",
false);
CanvasWithPopup canvas;
java3(){
super("java3");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
add(cb,BorderLayout.NORTH);
cb.a(chǎn)ddhemListener(this);
PopupMenu popup=new PopupMenu("Button
Control"):
popup.a(chǎn)dd("iteml");
popup.a(chǎn)dd("item2");
popup.a(chǎn)ddActionListener(this);
canvas=new CanvasWithPopup(popup);
add(canvas,BorderLayout.CENTER);
setSize(100,200);
show();
}
14[簡答題]
本題的功能是求兩個交叉圖形的并、減、交和異或。窗口中有4個單選按鈕和一個圖形面板,面板中有兩個交叉的圖形,選中其中一個單選按鈕,圖形面板中以黑色填充的方式顯示運算結(jié)果。
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.event*+;
import java.a(chǎn)wt.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(areal);
g2.draw(area2);
if(area!=null)g2.fill(area);
}
};
contentPane. add(panel,BorderLayout. CEN-
TER);
JPanel buttonPanel=new JPanel();
ButtonGroup group=new ButtonGroup();
JRadioButton addButton=new JRadioButton("
并",false);
buttonPanel.a(chǎn)dd(addButton);
group.a(chǎn)dd(addButton);
addButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area();
area.a(chǎn)dd(areal);
area.a(chǎn)dd(area2);
panel.repaint();
}
});
JRadioButton subtractButton
=new JRadioButton("減",false);
buttonPanel.a(chǎn)dd(subtractButton);
group.a(chǎn)dd(subtractButton);
subtractButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area();
area.a(chǎn)dd(areal);
area.subTract(area2);
panel.repaint();
}
});
JRadioButton intersectButton
=new JRadioButton("交",false);
buttonPanel.a(chǎn)dd(intersectButton);
group.a(chǎn)dd(intersectButton);
intersectButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area():
area.a(chǎn)dd(areal);
area.intersect(area2);
panel.repaint();
}
});
JRadioButton exclusiveCIrButton
=new JRadioButton(“異或”,false);
buttonPanel.a(chǎn)dd(exelusiveOrButton);
group.a(chǎn)dd(exclusiveOrButton);
exclusiveOrButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area();
area.a(chǎn)dd(areal);
area.exclusiveor(area2);
panel.repaint();
}
});
contentPane.a(chǎn)dd(buttonPanel,BorderLayout.
NORTH);
}
private JPanel panel;
private Area area;
private Area areal;
private Area area2;
private static final int WIDTH=400;
private static final int HEIGHT=400;
}
15[簡答題]
本題的功能是監(jiān)聽對于顏色的復制和粘貼。程序窗l(fā):1中,有一個顏色設(shè)置框和兩個按鈕,名為“復制”和“粘貼”,在顏色設(shè)置框中設(shè)置顏色后,下面的預覽面板將顯示選中的顏色,單擊“復制”按鈕后,將設(shè)置的顏色復制到系統(tǒng)的剪貼板上,然后繼續(xù)選擇其他顏色,當單擊按鈕“粘貼”后預覽面板的顏色將設(shè)置為剛才復制的顏色。
importjava.io.*;
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.datatransfer.*;
import java.a(chǎn)wt.event.*;
import java.a(chǎn)wt.image.*;
import javax.swing.*;
public class java3
{
public static void main(String[]args)
{
JFrame frame=new SerialTransferFrame():
frame.setDefaultCloseoperation(JFrame.EXIT
ON_CLOSE);
frame.show();
}
}
class SerialTransferFrame extends JFrame
{
public SerialTransferFrame()
{
setTitle("java3"):
Container contentPane = getContentPane();
chooser=new JColorChooser();
contentPane.a(chǎn)dd(chooser,BorderLayout.CEN-
TER);
JPanel panel=new JPanel();
JButton copyButton=new JButton("復制");
panel.a(chǎn)dd(copyButton);
copyButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
copy();
}
});
JButton pasteButton=new JButton("粘貼");
panel.a(chǎn)dd(pasteButton);
pasteButton.a(chǎn)ddAetionListener(new
ActionListener()
{
public void aetionPerformed(AetionEvent event)
{
paste();
}
});
contentPane.a(chǎn)dd(panel,BorderLayout.SOUTH);
pack();
}
private void copy()
{
Clipboard clipboard
=Toolkit.getDefaultToolkit().getSystemClip-
board();
int color=chooser.getColor();
SerialSeleetion selection=new SerialSelection
(color);
clipboard.setContents(selection,null);
}
private void paste()
{
Clipboard clipboard
=Toolkit.getDefaultToolkit().getSystemClip-
board();
Transferable contents=clipboard.getContents
(null);
if(contents= =null)return;
try
{
DataFlavor flavor=new DataFlavor(
"application/x-java-serialized-object;class=
java.a(chǎn)wt.Color");
if(contents.isDataFlavorSupported(flavor))
{
Color color
=(Color)contents.getTransferData(flavor);
;
}
}
catch(ClassNotFoundException exception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
catch(UnsupportedFlavorException exception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
catch(IOException exception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
}
private JColorChooser chooser;
}
class SerialSelection implements Transferable
{
SerialSelection(Serializable o)
{
obj=o:
}
public DataFlavor[]getTransferDataFlavors()
{
DataFlavor[]flavors=new DataFlavor[2];
Class type=obj.getClass();
String mimeType
="application/x-java-serialized-object;class
="
+type.getName();
try
{
flavors[0]=new DataFlavor(mimeType);
flavors[1]=DataFlavor.stringFlavor;
return flavors;
}
catch(ClassNotFoundExeeption exception)
{
return new DataFlavor[O];
}
}
public boolean isDataFlavorSupported(DataFlavor
flavor)
{
Return
DataFlavor.stringFlavor.equals(flavor)‖"appli-
cation".equals(flavor.getPrimaryType())
&&"x-iava-serialized-object".equals(flavor.
getSubType())
&&flavor.getRepresentationClass().isAssign-
ableFrom(obj.getClass());
}
public void getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException
{
if(! isDataFlavorSupported(flavor))
throw new UnsupportedFlavorException(flaVor);
if(DataFlavor.stringFlavor.equals(flavor))
return obj.toString();
return obj;
}
private Serializable obj;
}
本題的功能是定義圖形按鈕。窗口中有兩個圖形按鈕,當鼠標移上去時,圖形按鈕的圖形將改變,用鼠標單擊按鈕時圖形按鈕的圖形又發(fā)生改變,當鼠標左鍵松開或者移開鼠標后,圖形按鈕的圖形又恢復原樣。
import javax.swing.*;
import java.a(chǎn)wt.*;
public class java3 extend Jbutton{
public java3(Icon icon,Icon pressed,Icon rollover){
this(icon);
setFocusPainted(false);
setRolloverEnabled(true);
setRolloverlcon(rollover);
setPressedIcon(pressed);
setBorderPainted(false);
setContentAreaFilled(false);
}
public static void main(String[]args){
java3 b1=new java3(
new ImageIcon("java3-redcube.gif"),
new ImageIcon("java3-redpaw.gif"),
new ImageIcon("java3-reddiamond.gif"));
java3 b2一new java3(
new ImageIcon("java3-bluecube.gif")。
new ImageIcon("java3-bluepaw.gif"),
new ImageIcon("java3-bluediamond.gif"));
JFrame f=new JFrame();
f.setTitle("java3");
f.setDefauhCloseOperation(JFrame.EXIT_ON_
CLOSE);
c=f.getContentpane();
c.setLayout(new FlowLayout());
c.a(chǎn)dd(b1);
c.a(chǎn)dd(b2);
f.pack();
f.setVisible(true);
12[簡答題]
本題的功能是監(jiān)聽對于列表項的操作。窗口中有一個列表和三個按鈕“添加”、“刪除”和“關(guān)閉”。單擊“添加”按鈕,則會在當前所選列表項后添加一個名為“新增表項”的列表項,同時后臺輸入列表中的表項數(shù)量。單擊“刪除”按鈕后,如果未選中表項,則彈出提示消息框“請選擇表項”。否則將選中的表項刪除,同時后臺輸出刪除表項的內(nèi)容和列表中的表項數(shù)量。單擊“關(guān)閉”按鈕退出程序。
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.event.*;
import javax.swing.JOptionPane;
public class java3
{
public static void main(String args[])
{
final Frame frmFrame=new Frame();
Panel pnlPanell=new Panel();
Panel pnlPanel2=new Panel();
final List lstList=new List(8):
for(int i=0;i<10;i++)
{
String strName="表項"+(new Integer(i+
1)).toString():
lstList.a(chǎn)dd(strName);
}
Button btnButtonl=new Button("添加");
Button btnButton2=new Button("刪除");
Button btnButton3=new Button("關(guān)閉");
btnButtonl.a(chǎn)ddActionListener(new AetionListen-
er()
{
public void actionPerformed(ActionEvent e)
{
lstList.a(chǎn)dd("新增表項",lstList.getSelected()+
1);
System.out.println("列表中的表項數(shù)量:"+
lstList.getItemCount());
}
});
btnButton2.a(chǎn)ddActionListener(new ActionListen-
er()
{
public void aetionPerformed(ActionEvent e)
{
if(lstList.getSelected()= =null)
{
JOptionPane.showMessageDialog(frmFrame,"請
選擇表項");
return;
}
System.out.println("刪除表項的內(nèi)容:"+
IstList.getSelectedItem());
lstList.delete(lstList,getSelectedIndex());
System.out.println("列表中的表項數(shù)量:"+
lstList.getltemCount()):
}
});
btnButton3.a(chǎn)ddActionListener(new ActionListen-
er()
{
public void actionPerformed(ActionEvent e)
{
System.exit(O);
}
});
pnlPanell.a(chǎn)dd(lstList);
pnlPanel2.a(chǎn)dd(btnButtonl);
pnlPanel2.a(chǎn)dd(btnButton2);
pnlPanel2.a(chǎn)dd(btnButton3);
frmFrame.a(chǎn)dd("North",pnlPanell);
frmFrame.a(chǎn)dd("South",pnlPanel2);
frmFrame.setTitle("java3");
frmFrame.pack();
frmFrame.show();
}
}
13[簡答題]
本題的功能是用復選按鈕來控制鼠標右鍵的彈出菜單是否彈出。窗口中有一個復選按鈕“彈出菜單”,如果選中該復選按鈕后,鼠標置于窗口上,單擊鼠標右鍵會彈出一個菜單,單擊菜單項中的選項后,后臺會輸出單擊的菜單項,如果取消該復選按鈕的選擇,單擊鼠標右鍵則不能彈出菜單。
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.event.*;
class CanvasWithPopup extends Canvas{
Popupmenu popup;
CanvasWithPopup(PopupMenu popup){
enableEvents(AWTEvent.MOUSE EVENT
MASK):
this.popup=popup;
}
void addPopup(){
add(popup);
}
void removePopup(){
remove(popup);
}
protected void processMouseEvent(MouseEvent
evt){
if(popup.getParent()!=null&&evt.isPop-
upTrigger()){
popup.show(evt.getComponent(),evt.getX(),
evt.getY());
}
super.processMouseEvent(evt);
}
}
public class java3 extends Frame implements Item-
Listener,ActionListener{
Checkbox cb=new Checkbox("彈出菜單",
false);
CanvasWithPopup canvas;
java3(){
super("java3");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
add(cb,BorderLayout.NORTH);
cb.a(chǎn)ddhemListener(this);
PopupMenu popup=new PopupMenu("Button
Control"):
popup.a(chǎn)dd("iteml");
popup.a(chǎn)dd("item2");
popup.a(chǎn)ddActionListener(this);
canvas=new CanvasWithPopup(popup);
add(canvas,BorderLayout.CENTER);
setSize(100,200);
show();
}
14[簡答題]
本題的功能是求兩個交叉圖形的并、減、交和異或。窗口中有4個單選按鈕和一個圖形面板,面板中有兩個交叉的圖形,選中其中一個單選按鈕,圖形面板中以黑色填充的方式顯示運算結(jié)果。
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.event*+;
import java.a(chǎn)wt.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(areal);
g2.draw(area2);
if(area!=null)g2.fill(area);
}
};
contentPane. add(panel,BorderLayout. CEN-
TER);
JPanel buttonPanel=new JPanel();
ButtonGroup group=new ButtonGroup();
JRadioButton addButton=new JRadioButton("
并",false);
buttonPanel.a(chǎn)dd(addButton);
group.a(chǎn)dd(addButton);
addButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area();
area.a(chǎn)dd(areal);
area.a(chǎn)dd(area2);
panel.repaint();
}
});
JRadioButton subtractButton
=new JRadioButton("減",false);
buttonPanel.a(chǎn)dd(subtractButton);
group.a(chǎn)dd(subtractButton);
subtractButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area();
area.a(chǎn)dd(areal);
area.subTract(area2);
panel.repaint();
}
});
JRadioButton intersectButton
=new JRadioButton("交",false);
buttonPanel.a(chǎn)dd(intersectButton);
group.a(chǎn)dd(intersectButton);
intersectButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area():
area.a(chǎn)dd(areal);
area.intersect(area2);
panel.repaint();
}
});
JRadioButton exclusiveCIrButton
=new JRadioButton(“異或”,false);
buttonPanel.a(chǎn)dd(exelusiveOrButton);
group.a(chǎn)dd(exclusiveOrButton);
exclusiveOrButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
area=new Area();
area.a(chǎn)dd(areal);
area.exclusiveor(area2);
panel.repaint();
}
});
contentPane.a(chǎn)dd(buttonPanel,BorderLayout.
NORTH);
}
private JPanel panel;
private Area area;
private Area areal;
private Area area2;
private static final int WIDTH=400;
private static final int HEIGHT=400;
}
15[簡答題]
本題的功能是監(jiān)聽對于顏色的復制和粘貼。程序窗l(fā):1中,有一個顏色設(shè)置框和兩個按鈕,名為“復制”和“粘貼”,在顏色設(shè)置框中設(shè)置顏色后,下面的預覽面板將顯示選中的顏色,單擊“復制”按鈕后,將設(shè)置的顏色復制到系統(tǒng)的剪貼板上,然后繼續(xù)選擇其他顏色,當單擊按鈕“粘貼”后預覽面板的顏色將設(shè)置為剛才復制的顏色。
importjava.io.*;
import java.a(chǎn)wt.*;
import java.a(chǎn)wt.datatransfer.*;
import java.a(chǎn)wt.event.*;
import java.a(chǎn)wt.image.*;
import javax.swing.*;
public class java3
{
public static void main(String[]args)
{
JFrame frame=new SerialTransferFrame():
frame.setDefaultCloseoperation(JFrame.EXIT
ON_CLOSE);
frame.show();
}
}
class SerialTransferFrame extends JFrame
{
public SerialTransferFrame()
{
setTitle("java3"):
Container contentPane = getContentPane();
chooser=new JColorChooser();
contentPane.a(chǎn)dd(chooser,BorderLayout.CEN-
TER);
JPanel panel=new JPanel();
JButton copyButton=new JButton("復制");
panel.a(chǎn)dd(copyButton);
copyButton.a(chǎn)ddActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
copy();
}
});
JButton pasteButton=new JButton("粘貼");
panel.a(chǎn)dd(pasteButton);
pasteButton.a(chǎn)ddAetionListener(new
ActionListener()
{
public void aetionPerformed(AetionEvent event)
{
paste();
}
});
contentPane.a(chǎn)dd(panel,BorderLayout.SOUTH);
pack();
}
private void copy()
{
Clipboard clipboard
=Toolkit.getDefaultToolkit().getSystemClip-
board();
int color=chooser.getColor();
SerialSeleetion selection=new SerialSelection
(color);
clipboard.setContents(selection,null);
}
private void paste()
{
Clipboard clipboard
=Toolkit.getDefaultToolkit().getSystemClip-
board();
Transferable contents=clipboard.getContents
(null);
if(contents= =null)return;
try
{
DataFlavor flavor=new DataFlavor(
"application/x-java-serialized-object;class=
java.a(chǎn)wt.Color");
if(contents.isDataFlavorSupported(flavor))
{
Color color
=(Color)contents.getTransferData(flavor);
;
}
}
catch(ClassNotFoundException exception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
catch(UnsupportedFlavorException exception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
catch(IOException exception)
{
JOptionPane.showMessageDialog(this,excep-
tion);
}
}
private JColorChooser chooser;
}
class SerialSelection implements Transferable
{
SerialSelection(Serializable o)
{
obj=o:
}
public DataFlavor[]getTransferDataFlavors()
{
DataFlavor[]flavors=new DataFlavor[2];
Class type=obj.getClass();
String mimeType
="application/x-java-serialized-object;class
="
+type.getName();
try
{
flavors[0]=new DataFlavor(mimeType);
flavors[1]=DataFlavor.stringFlavor;
return flavors;
}
catch(ClassNotFoundExeeption exception)
{
return new DataFlavor[O];
}
}
public boolean isDataFlavorSupported(DataFlavor
flavor)
{
Return
DataFlavor.stringFlavor.equals(flavor)‖"appli-
cation".equals(flavor.getPrimaryType())
&&"x-iava-serialized-object".equals(flavor.
getSubType())
&&flavor.getRepresentationClass().isAssign-
ableFrom(obj.getClass());
}
public void getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException
{
if(! isDataFlavorSupported(flavor))
throw new UnsupportedFlavorException(flaVor);
if(DataFlavor.stringFlavor.equals(flavor))
return obj.toString();
return obj;
}
private Serializable obj;
}