// DrawingInternalFrame.java
// DrawingInternalFrame is a JInternalFrame subclass for
// DeitelDrawing drawings.
package com.deitel.advjhtp1.drawing;
// Java core packages
import java.awt.*;
import java.awt.event.*;
import java.awt.dnd.*;
import java.io.*;
import java.util.*;
import java.util.List;
// Java extension packages
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
// Deitel packages
import com.deitel.advjhtp1.drawing.model.*;
import com.deitel.advjhtp1.drawing.model.shapes.*;
import com.deitel.advjhtp1.drawing.view.*;
import com.deitel.advjhtp1.drawing.controller.*;
public class DrawingInternalFrame extends JInternalFrame
implements Observer {
// offsets to stagger new windows
private static final int xOffset = 30;
private static final int yOffset = 30;
private static int openFrameCount = 0;
// MVC components
private DrawingModel drawingModel;
private DrawingView drawingView;
private MyShapeController myShapeController;
private DragAndDropController dragAndDropController;
private MyShapeControllerFactory shapeControllerFactory;
// file management properties
private JFileChooser fileChooser;
private String fileName;
private String absoluteFilePath;
private boolean saved = true;
private DrawingToolBar toolBar;
private ZoomDialog zoomDialog;
// Actions for save, zoom, move, etc.
private Action saveAction, saveAsAction, zoomAction,
moveAction, fillAction, gradientAction;
// DrawingInternalFrame constructor
public DrawingInternalFrame( String title )
{
super( title + " - " + ( ++openFrameCount ), true, true,
false, true );
setDefaultCloseOperation(
WindowConstants.DO_NOTHING_ON_CLOSE );
// create new DrawingModel
drawingModel = new DrawingModel();
// create new DrawingView for DrawingModel
drawingView = new DrawingView( drawingModel );
// register DrawingInternalFrame as a DrawingModel Observer
drawingModel.addObserver( this );
// MyShapeControllerFactory for creating MyShapeControllers
shapeControllerFactory =
MyShapeControllerFactory.getInstance();
// create DragAndDropController for drag and drop operations
dragAndDropController =
new DragAndDropController( drawingModel );
// get default DragSource for current platform
DragSource dragSource = DragSource.getDefaultDragSource();
// create DragGestureRecognizer to register
// DragAndDropController as DragGestureListener
dragSource.createDefaultDragGestureRecognizer( drawingView,
DnDConstants.ACTION_COPY_OR_MOVE,
dragAndDropController );
// enable drawingView to accept drop operations, using
// dragAndDropController as DropTargetListener
drawingView.setDropTarget( new DropTarget( drawingView,
DnDConstants.ACTION_COPY_OR_MOVE,
dragAndDropController ) );
// add drawingView to viewPanel, put viewPanel in
// JScrollPane and add JScrollPane to DrawingInternalFrame
JPanel viewPanel = new JPanel();
viewPanel.add( drawingView );
getContentPane().add( new JScrollPane( viewPanel ),
BorderLayout.CENTER );
// create fileChooser and set its FileFilter
fileChooser = new JFileChooser();
fileChooser.setFileFilter( new DrawingFileFilter() );
// show/hide ZoomDialog when frame activated/deactivated
addInternalFrameListener(
new InternalFrameAdapter() {
// when DrawingInternalFrame activated, make
// associated zoomDialog visible
public void internalFrameActivated(
InternalFrameEvent event )
{
if ( zoomDialog != null )
zoomDialog.setVisible( true );
}
// when DrawingInternalFrame is deactivated, make
// associated zoomDialog invisible
public void internalFrameDeactivated(
InternalFrameEvent event )
{
if ( zoomDialog != null )
zoomDialog.setVisible( false );
}
}
); // end call to addInternalFrameListener
// stagger each DrawingInternalFrame to prevent it from
// obscuring other InternalFrames
setLocation( xOffset * openFrameCount,
yOffset * openFrameCount );
// add new DrawingToolBar to NORTH area
toolBar = new DrawingToolBar();
getContentPane().add( toolBar, BorderLayout.NORTH );
// get name of first MyShape that shapeControllerFactory
// supports and create MyShapeController
String shapeName =
shapeControllerFactory.getSupportedShapes()[ 0 ];
setMyShapeController(
shapeControllerFactory.newMyShapeController(
drawingModel, shapeName ) );
// set DrawingInternalFrame size
setSize( 500, 320 );
} // end DrawingInternalFrame constructor
// get DrawingInternalFrame Save Action
public Action getSaveAction()
{
return saveAction;
}
// get DrawingInternalFrame Save As Action
public Action getSaveAsAction()
{
return saveAsAction;
}
// set Saved flag for current drawing and update frame
// title to indicate saved state to user
public void setSaved( boolean drawingSaved )
{
// set Saved property
saved = drawingSaved;
// get current DrawingInternalFrame title
String title = getTitle();
// if drawing is not saved and title does not end with
// an asterisk, add asterisk to title
if ( !title.endsWith( " *" ) && !isSaved() )
setTitle( title + " *" );
// if title ends with * and drawing has been saved,
// remove * from title
else
if ( title.endsWith( " *" ) && isSaved() )
setTitle( title.substring( 0,
title.length() - 2 ) );
// enable save actions if drawing not saved
getSaveAction().setEnabled( !isSaved() );
}
// return value of saved property
public boolean isSaved()
{
return saved;
}
// handle updates from DrawingModel
public void update( Observable observable, Object object )
{
// set saved property to false to indicate that
// DrawingModel has changed
setSaved( false );
}
// set fileName for current drawing
public void setFileName( String file )
{
fileName = file;
// update DrawingInternalFrame title
setTitle( fileName );
}
// get fileName for current drawing
public String getFileName()
{
return fileName;
}
// get full path (absoluteFilePath) for current drawing
public String getAbsoluteFilePath()
{
return absoluteFilePath;
}
// set full path (absoluteFilePath) for current drawing
public void setAbsoluteFilePath( String path )
{
absoluteFilePath = path;
}
// get DrawingModel for current drawing
public DrawingModel getModel()
{
return drawingModel;
}
// set JInternalFrame and ZoomDialog titles
public void setTitle( String title )
{
super.setTitle( title );
if ( zoomDialog != null )
zoomDialog.setTitle( title );
}
// set MyShapeController for handling user input
public void setMyShapeController(
MyShapeController controller )
{
// remove old MyShapeController
if ( myShapeController != nul
没有合适的资源?快使用搜索试试~ 我知道了~
高级java2大学教程 源代码
共1773个文件
java:901个
jpg:325个
png:132个
1星 需积分: 10 64 下载量 95 浏览量
2008-04-11
11:46:44
上传
评论 1
收藏 5.92MB ZIP 举报
温馨提示
本书是一本高级Java 2编程方面的优秀教材,全面介绍了Java 2平台的多种常用及前沿技术。本书从高级GUI编程入手,讲解了Java 2D、Java 3D图形设计以及JavaBean组件模型;讨论了分布式编程,其中包括RMI、Jini、Jiro、JMX、CORBA以及JavaSpace的相关概念;介绍了有关网络服务的内容,并通过实例讲解了servlet和JSP的应用,然后列举了与其他Web服务相关的技术,例如WML、SOAP等。本书还讨论了构造企业级Java应用的关键技术,其中包括安全、JDBC、EJB等,并给出一个利用Java技术实现的网上书店。全书内容丰富、结构严谨、条理清晰,写作方法别具一格,并且给出了大量的实例和练习,是一本难得的高级Java书籍。这里是该书的源代码文件<br>
资源推荐
资源详情
资源评论
收起资源包目录
高级java2大学教程 源代码 (1773个子文件)
policy.all 128B
policy.all 128B
policy.all 128B
policy.all 128B
policy.all 128B
policy.all 128B
policy.all 128B
policy.all 128B
policy.all 60B
compileRMI_IIOP.bat 726B
compileRMI_IIOP.bat 726B
compileIDL.bat 540B
compileIDL.bat 540B
compileIDL.bat 537B
compileIDL.bat 537B
compileIDL.bat 497B
compileIDL.bat 496B
startserver.bat 494B
startserver.bat 494B
stopserver.bat 493B
stopserver.bat 493B
compileIDL.bat 492B
compileIDL.bat 479B
compileIDL.bat 478B
compileIDL.bat 474B
startclient.bat 463B
startclient.bat 463B
compileIDL2.bat 433B
compileIDL1.bat 433B
compileIDL2.bat 416B
compileIDL1.bat 416B
startclient.bat 399B
startclient.bat 399B
startserver.bat 398B
startserver.bat 398B
startclient.bat 394B
startclient.bat 393B
startclient.bat 393B
startclient.bat 393B
startclient.bat 393B
startserver.bat 392B
startserver.bat 392B
startserver.bat 392B
startserver.bat 391B
startserver.bat 391B
startclient.bat 387B
startserver.bat 385B
startclient.bat 377B
startserver.bat 375B
startclient.bat 370B
startserver.bat 368B
createDatabase.bat 71B
createDatabase.bat 71B
createDatabase.bat 71B
createDatabase.bat 71B
createDatabase.bat 71B
createDatabase.bat 71B
jaas.config 173B
JNITintImage.cpp 5KB
JNIArrayWrapperImpl.cpp 3KB
JNIPIWrapperImpl.cpp 2KB
JNIPrintWrapperImpl.cpp 2KB
JNIStaticWrapperImpl.cpp 1KB
default.css 3KB
styles.css 2KB
styles.css 2KB
JNIMathLibrary.dll 240KB
JNIPrintMessage.dll 224KB
JNIPILibrary.dll 216KB
JNIArrayLibrary.dll 200KB
conditional.dtd 2KB
welcome.dtd 1KB
clients.dtd 339B
BEA_Bookstore.ear 371KB
Bookstore.ear 356KB
start.GIF 11KB
start.GIF 11KB
logotiny.gif 6KB
lookAndFeel.gif 3KB
portability.gif 2KB
softwareEngineering.gif 2KB
goodProgramming.gif 2KB
testingDebugging.gif 2KB
programmingError.gif 2KB
perf.gif 2KB
testingDebugging.gif 1KB
lookAndFeel.gif 1KB
Help24.gif 1KB
Help24.gif 1KB
Help24.gif 1KB
home.gif 1KB
home.gif 1KB
home.gif 1KB
home.gif 1KB
home.gif 1KB
home.gif 1KB
home.gif 1KB
home.gif 1KB
portability.gif 1KB
softwareEngineering.gif 1KB
共 1773 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18
资源评论
- huststone2015-08-14貌似不能使用
wangdan1600
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 111111111111111111
- Screenshot_2024-04-30-21-47-24-26.jpg
- Cpp1.cpp1111111111
- 利用ERP流程操作的整个订单流程.ppt
- 最新二开版本源码博客论坛源码,UI很漂亮,可切换皮肤界面.rar
- ModStartBlog现代化个人博客系统 v5.2.0源码.rar
- 带posix库的mingw编译器
- SoraAI是一款功能强大的AI助手,由OpenAI开发,以其出色的语音识别技术、广泛的知识库和高度的人工智能特性而备受瞩目
- Thinkphp开发大气响应式个人博客青春博客网站源码.rar
- 最新PHP博客网站程序源码 ThinkPHP.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功