import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;public class InternalFrameTest { public static void main(String[] args) {
JFrame frame = new DesktopFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }}class DesktopFrame extends JFrame
{
public DesktopFrame()
{
setTitle("InternalFrame");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
desktop = new JDesktopPane();
add(desktop,BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu =new JMenu("File");
menuBar.add(fileMenu);
JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
createInternalFrame (new JLabel(new ImageIcon(planets[counter]+".gif")),planets[counter]);
counter= (counter+1)%planets.length;
}
});
fileMenu.add(openItem);
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener( new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(exitItem);
JMenu windowMenu = new JMenu("Window");
menuBar.add(windowMenu);
JMenuItem nextItem = new JMenuItem("Next");
nextItem.addActionListener( new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
selectNextWindow();
}
});
windowMenu.add(nextItem);
JMenuItem cascadeItem = new JMenuItem ("Cascade");
cascadeItem.addActionListener( new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
cascadeWindows();
}
});
windowMenu.add(cascadeItem);
JMenuItem tileItem = new JMenuItem("Tile");
tileItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
tileWindows();
}
});
windowMenu.add(tileItem);
final JCheckBoxMenuItem dragOutlineItem = new JCheckBoxMenuItem("Drage Outline");
dragOutlineItem.addActionListener(new
ActionListener()
{
public void actionPerformed (ActionEvent event )
{
desktop.setDragMode(dragOutlineItem.isSelected()?
JDesktopPane.OUTLINE_DRAG_MODE:JDesktopPane.LIVE_DRAG_MODE);
}
});
windowMenu.add(dragOutlineItem);
}
public void createInternalFrame(Component c,String t)
{
final JInternalFrame iframe = new JInternalFrame(t,
true,
true,
true,
true);
iframe.add(c,BorderLayout.CENTER);
desktop.add(iframe);
iframe.setFrameIcon(new ImageIcon("document.gif"));
iframe.addVetoableChangeListener( new
VetoableChangeListener()
{
public void vetoableChange(PropertyChangeEvent event)
{
String name = event.getPropertyName();
Object value = event.getNewValue();
if(name.equals("closed")&&value.equals(true))
{
int result = JOptionPane.showInternalConfirmDialog(
iframe,"OK to close?","Select an Option",JOptionPane.YES_NO_OPTION);
if(result!=JOptionPane.YES_OPTION)
throw new java.beans.PropertyVetoException("User canceled close",event);
}
}
});
int width= desktop.getWidth()/2;
int height = desktop.getHeight()/2;
iframe.reshape(nextFrameX, nextFrameY, width, height);
iframe.show();
try
{
iframe.setSelected(true);
}
catch(PropertyVetoException e)
{
}
frameDistance = iframe.getHeight()-iframe.getContentPane().getHeight();
nextFrameX+=frameDistance;
nextFrameY+=frameDistance;
if((nextFrameX+width)>desktop.getWidth()) nextFrameX=0;
if((nextFrameY+height)>desktop.getHeight()) nextFrameY=0;
}
public void cascadeWindows()
{
int x=0;
int y=0;
int width = desktop.getWidth()/2;
int height = desktop.getHeight()/2;
for(JInternalFrame frame: desktop.getAllFrames())
{
if(!frame.isIcon())
{
try
{
frame.setMaximum(false);
frame.reshape(x, y, width, height);
x+=frameDistance;
y+=frameDistance;
if(x+width>desktop.getWidth()) x=0;
if(y+height>desktop.getHeight()) y=0;
}
catch(PropertyVetoException e)
{}
}
}
}
public void tileWindows()
{
int frameCount =0;
for(JInternalFrame frame: desktop.getAllFrames())
if(!frame.isIcon()) frameCount++;
if(frameCount==0) return;
int rows = (int) Math.sqrt(frameCount);
int cols = frameCount/rows;
int extra = frameCount%rows;
int width = desktop.getWidth()/cols;
int height = desktop.getHeight()/rows;
int r=0;
int c=0;
for(JInternalFrame frame: desktop.getAllFrames())
{
if(!frame.isIcon())
{
try
{
frame.setMaximum(false);
frame.reshape(c*width, r*height, width, height);
r++;
if(r==rows)
{
r=0;
c++;
if(c==cols-extra)
{
rows++;
height=desktop.getHeight()/rows;
}
}
}
catch(PropertyVetoException e)
{}
}
}
}
public void selectNextWindow()
{
JInternalFrame[] frames = desktop.getAllFrames();
for(int i =0;i<frames.length;i++)
{
if(frames[i].isSelected())
{
int next = (i+1)%frames.length;
while(next!=i)
{
if(!frames[next].isIcon())
{
try
{
frames[next].setSelected(true);
frames[next].toFront();
frames[next].toBack();
return;
}
catch(PropertyVetoException e)
{}
}
next=(next+1)&frames.length;
}
}
}
}
private JDesktopPane desktop;
private int nextFrameX;
private int nextFrameY;
private int frameDistance;
private int counter;
private static final String[] planets=
{
"Mercury",
"Venus",
"Earth",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto"
};
private static final int DEFAULT_WIDTH=300;
private static final int DEFAULT_HEIGHT =200;
}Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
Unhandled exception type PropertyVetoException
我查看了,PropertyVetoException 是属于java.beans.*;里面类,为什么还是要报错了?
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;public class InternalFrameTest { public static void main(String[] args) {
JFrame frame = new DesktopFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); }}class DesktopFrame extends JFrame
{
public DesktopFrame()
{
setTitle("InternalFrame");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
desktop = new JDesktopPane();
add(desktop,BorderLayout.CENTER);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu fileMenu =new JMenu("File");
menuBar.add(fileMenu);
JMenuItem openItem = new JMenuItem("Open");
openItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
createInternalFrame (new JLabel(new ImageIcon(planets[counter]+".gif")),planets[counter]);
counter= (counter+1)%planets.length;
}
});
fileMenu.add(openItem);
JMenuItem exitItem = new JMenuItem("Exit");
exitItem.addActionListener( new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(exitItem);
JMenu windowMenu = new JMenu("Window");
menuBar.add(windowMenu);
JMenuItem nextItem = new JMenuItem("Next");
nextItem.addActionListener( new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
selectNextWindow();
}
});
windowMenu.add(nextItem);
JMenuItem cascadeItem = new JMenuItem ("Cascade");
cascadeItem.addActionListener( new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
cascadeWindows();
}
});
windowMenu.add(cascadeItem);
JMenuItem tileItem = new JMenuItem("Tile");
tileItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
tileWindows();
}
});
windowMenu.add(tileItem);
final JCheckBoxMenuItem dragOutlineItem = new JCheckBoxMenuItem("Drage Outline");
dragOutlineItem.addActionListener(new
ActionListener()
{
public void actionPerformed (ActionEvent event )
{
desktop.setDragMode(dragOutlineItem.isSelected()?
JDesktopPane.OUTLINE_DRAG_MODE:JDesktopPane.LIVE_DRAG_MODE);
}
});
windowMenu.add(dragOutlineItem);
}
public void createInternalFrame(Component c,String t)
{
final JInternalFrame iframe = new JInternalFrame(t,
true,
true,
true,
true);
iframe.add(c,BorderLayout.CENTER);
desktop.add(iframe);
iframe.setFrameIcon(new ImageIcon("document.gif"));
iframe.addVetoableChangeListener( new
VetoableChangeListener()
{
public void vetoableChange(PropertyChangeEvent event)
{
String name = event.getPropertyName();
Object value = event.getNewValue();
if(name.equals("closed")&&value.equals(true))
{
int result = JOptionPane.showInternalConfirmDialog(
iframe,"OK to close?","Select an Option",JOptionPane.YES_NO_OPTION);
if(result!=JOptionPane.YES_OPTION)
throw new java.beans.PropertyVetoException("User canceled close",event);
}
}
});
int width= desktop.getWidth()/2;
int height = desktop.getHeight()/2;
iframe.reshape(nextFrameX, nextFrameY, width, height);
iframe.show();
try
{
iframe.setSelected(true);
}
catch(PropertyVetoException e)
{
}
frameDistance = iframe.getHeight()-iframe.getContentPane().getHeight();
nextFrameX+=frameDistance;
nextFrameY+=frameDistance;
if((nextFrameX+width)>desktop.getWidth()) nextFrameX=0;
if((nextFrameY+height)>desktop.getHeight()) nextFrameY=0;
}
public void cascadeWindows()
{
int x=0;
int y=0;
int width = desktop.getWidth()/2;
int height = desktop.getHeight()/2;
for(JInternalFrame frame: desktop.getAllFrames())
{
if(!frame.isIcon())
{
try
{
frame.setMaximum(false);
frame.reshape(x, y, width, height);
x+=frameDistance;
y+=frameDistance;
if(x+width>desktop.getWidth()) x=0;
if(y+height>desktop.getHeight()) y=0;
}
catch(PropertyVetoException e)
{}
}
}
}
public void tileWindows()
{
int frameCount =0;
for(JInternalFrame frame: desktop.getAllFrames())
if(!frame.isIcon()) frameCount++;
if(frameCount==0) return;
int rows = (int) Math.sqrt(frameCount);
int cols = frameCount/rows;
int extra = frameCount%rows;
int width = desktop.getWidth()/cols;
int height = desktop.getHeight()/rows;
int r=0;
int c=0;
for(JInternalFrame frame: desktop.getAllFrames())
{
if(!frame.isIcon())
{
try
{
frame.setMaximum(false);
frame.reshape(c*width, r*height, width, height);
r++;
if(r==rows)
{
r=0;
c++;
if(c==cols-extra)
{
rows++;
height=desktop.getHeight()/rows;
}
}
}
catch(PropertyVetoException e)
{}
}
}
}
public void selectNextWindow()
{
JInternalFrame[] frames = desktop.getAllFrames();
for(int i =0;i<frames.length;i++)
{
if(frames[i].isSelected())
{
int next = (i+1)%frames.length;
while(next!=i)
{
if(!frames[next].isIcon())
{
try
{
frames[next].setSelected(true);
frames[next].toFront();
frames[next].toBack();
return;
}
catch(PropertyVetoException e)
{}
}
next=(next+1)&frames.length;
}
}
}
}
private JDesktopPane desktop;
private int nextFrameX;
private int nextFrameY;
private int frameDistance;
private int counter;
private static final String[] planets=
{
"Mercury",
"Venus",
"Earth",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto"
};
private static final int DEFAULT_WIDTH=300;
private static final int DEFAULT_HEIGHT =200;
}Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
Unhandled exception type PropertyVetoException
我查看了,PropertyVetoException 是属于java.beans.*;里面类,为什么还是要报错了?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货