日期:2014-05-17 浏览次数:20862 次
public class TopLevelTransferHandlerDemo extends JFrame {
private static boolean DEMO = false;
private JDesktopPane dp = new JDesktopPane();
private DefaultListModel listModel = new DefaultListModel();
private JList list = new JList(listModel);
private static int left;
private static int top;
private JCheckBoxMenuItem copyItem;
private JCheckBoxMenuItem nullItem;
private JCheckBoxMenuItem thItem;
private class Doc extends InternalFrameAdapter implements ActionListener {
String name;
JInternalFrame frame;
TransferHandler th;
JTextArea area;
public Doc(File file) {
this.name = file.getName();
try {
init(file.toURI().toURL());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public Doc(String name) {
this.name = name;
init(getClass().getResource(name));
}
private void init(URL url) {
frame = new JInternalFrame(name);
frame.addInternalFrameListener(this);
listModel.add(listModel.size(), this);
area = new JTextArea();
area.setMargin(new Insets(5, 5, 5, 5));
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String in;
while ((in = reader.readLine()) != null) {
area.append(in);
area.append("\n");
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
return;
}
th = area.getTransferHandler();
area.setFont(new Font("monospaced", Font.PLAIN, 12));
area.setCaretPosition(0);
area.setDragEnabled(true);
area.setDropMode(DropMode.INSERT);
frame.getContentPane().add(new JScrollPane(area));
dp.add(frame);
frame.show();
if (DEMO) {
frame.setSize(300, 200);
} else {
frame.setSize(400, 300);
}
frame.setResizable(true);
frame.setClosable(true);
frame.setIconifiable(true);
frame.setMaximizable(true);
frame.setLocation(left, top);
incr();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
select();
}
});
nullItem.addActionListener(this);
setNullTH();
}
public void internalFrameClosing(InternalFrameEvent event) {
listModel.removeElement(this);
nullItem.removeActionListener(this);
}
public void internalFrameOpened(InternalFrameEvent event) {
int index = listModel.indexOf(this);
list.getSelectionModel().setSelectionInterval(index, index);
}
public void internalFrameActivated(InternalFrameEvent event) {
int index = listModel.indexOf(this);
list.getSelectionModel().setSelectionInterval(index, index);
}
public String toString() {
return name;
}
public void select() {
try {
frame.toFront();
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}