📄 ezcell.java
字号:
/*
* Copyright 2002 EZCell , Inc. All rights reserved.
* Version 1.0.
* Author W.John
*/
package ezcell;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.print.PageFormat;
import java.net.URL;
import java.sql.*;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/**
* EZCell JavaBean
*/
public class EZCell extends JPanel implements ChangeListener, ZBookStateListener,
ZUndoManagerListener {
// modal
private ZBookState bookState;
// view
private ZBookView bookView;
private ZPrintPreview printPreview;
// user interface option
private ZDefaultUI ui;
private CardLayout layout = new CardLayout();
//listener
private Vector listeners = new Vector();
/**
* 构造函敉
*/
public EZCell() {
jbInit();
}
/**
* 设置指定的工作表为当前表
* @param active 新的当前表
*/
public void setActive(ZSheet active) {
bookState.setActive(active);
}
/**
* 取得当前表的焦点单元格
* @return 当前焦点单元格
*/
public ZCell getActiveCell() {
return bookState.getActive().getFocusCell();
}
/**
* 取得当前表
* @return 当前表
*/
public ZSheet getActiveSheet() {
return bookState.getActive().getSheet();
}
/**
* 设定工作薄
* @param book 新的工作薄
*/
public void setBook(ZDefaultBook book) {
if (bookState.getBook() == book) {
return;
}
bookState.setBook(book);
if (printPreview != null) {
layout.removeLayoutComponent(printPreview);
}
printPreview = null;
ZCmdFormat.undoManager.discardAllEdits();
}
/**
* 取得工作薄
* @return 当臆工作薄
*/
public ZBook getBook() {
return bookState.getBook();
}
/**
* 取得工作薄的文件名
* @return 文件名
*/
public String getFileName() {
return bookState.getBook().getFileName();
}
/**
* 设定水平格子线是否可见
* @param visible 可见/不可见(true/false)
*/
public void setGridXVisible(boolean visible) {
for (int i = 0; i < bookState.getCount(); i++)
bookState.getSheetState(i)
.put(ZDefaultUI.GRID_X_VISIBLE, new Boolean(visible));
}
/**
* 设定垂直格子线是否可见
* @param visible 可见/不可见(true/false)
*/
public void setGridYVisible(boolean visible) {
for (int i = 0; i < bookState.getCount(); i++)
bookState.getSheetState(i)
.put(ZDefaultUI.GRID_Y_VISIBLE, new Boolean(visible));
}
/**
* 设置行头是否可见
*
* @param visible 可见/不可见(true/false)
*/
public void setLeftHeaderVisible(boolean visible) {
for (int i = 0; i < bookState.getCount(); i++)
bookState.getSheetState(i)
.put(ZDefaultUI.LEFT_HEAD_VISIBLE, new Boolean(visible));
}
/**
* 当前工作薄是否已被修改,可用于提示"是否保存?"
* @return 被改/未改 (true/false))
*/
public boolean isModified() {
return bookState.getBook().isModified();
}
/**
* 查询是否正在编辑页脚页眉
* @return 正在编辑/不在编辑(true/false)
*/
public boolean isPageViewing() {
return !bookView.isVisible();
}
/**
* 查询当前视图的缩放比例
* @return 缩放比例
*/
public float getScale() {
return bookState.getActive().getScale();
}
/**
* 设置滚动条是否可见
* @param visible 可见/不可见(true/false)
*/
public void setScrollbarVisible(boolean visible) {
if (bookView != null) {
bookView.setScrollbarVisible(visible);
}
}
/**
* 设定选定单元格的背景刷
* @param sheet 指定工作表
* @param rect 指定被选单元格
* @param value 指定刷子对象
* @exception Exception 如果指定单元格与合并单元格相交,则不支持
*/
public void setSelectionBackBrush(ZSheet sheet, ZRect rect, ZBrush value)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionBackBrush(rect, value);
}
/**
* 指定被选单元格的边框属性
* @param sheet 指定工作表
* @param rect 被选单元格
* @param pens 指定边框线属性
* @exception Exception 如果指定单元格与合并单元格相交,或行选,或列选均不支持
*/
public void setSelectionBorders(ZSheet sheet, ZRect rect, ZPen[] pens)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionBorders(rect, pens);
}
/**
* 指定被选单元格的字体
* @param sheet 选定工作表
* @param rect 被选单元格
* @param font 字体属性
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFont(ZSheet sheet, ZRect rect, ZFont font)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFont(rect, font);
}
/**
* 指定被选单元格的字体加粗
* @param sheet 选定工作表
* @param rect 被选单元格
* @param fontBold 加粗/取消加粗(true/false)
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFontBold(ZSheet sheet, ZRect rect, boolean fontBold)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFontBold(rect, fontBold);
}
/**
* 设定被选元格是否斜体
* @param sheet 指定工作表
* @param rect 被选单元格
* @param fontItalic 斜/不斜(true/false)
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFontItalic(ZSheet sheet, ZRect rect, boolean fontItalic)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFontItalic(rect, fontItalic);
}
/**
* 设置被选单元格的字型
* @param sheet 指定工作表
* @param rect 被选单元格
* @param fontName 字型
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFontName(ZSheet sheet, ZRect rect, String fontName)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFontName(rect, fontName);
}
/**
* 指定被选单元格是否为空心字
* @param sheet 指定单元格
* @param rect 被选单元格
* @param fontOutline 空心/不空心(true/false)
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFontOutline(ZSheet sheet, ZRect rect, boolean fontOutline)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFontOutline(rect, fontOutline);
}
/**
* 指定被选单元格的字体大小
* @param sheet 指定工作表
* @param rect 被选单元格
* @param fontSize 字体大小
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFontSize(ZSheet sheet, ZRect rect, int fontSize)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFontSize(rect, fontSize);
}
/**
* 指定被选单元格的数字显示格式
* @param sheet 指定工作表
* @param rect 指定单元格
* @param format 数字格式
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionFormat(ZSheet sheet, ZRect rect, String format)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionFormat(rect, format);
}
/**
* 指定被选行的行高
* @param sheet 指定工作表
* @param rect 指定行
* @param height 新的行高
* @exception Exception 如果被选单元格与合并单元格相交,或不是行选则不支持
*/
public void setSelectionHeight(ZSheet sheet, ZRect rect, int height)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionHeight(rect, height);
}
/**
* 指定被选单元格的水平对齐属性
* @param sheet 指定工作表
* @param rect 被选单元格
* @param value 对齐属性值
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionHorzAlign(ZSheet sheet, ZRect rect, int value)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionHorzAlign(rect, value);
}
/**
* 设定被选单元格是否只读
* @param sheet 指定工作表
* @param rect 被选单元格
* @param value 只读/可读写(true/false)
* @exception Exception 如果被选单元格与合并单元格相交,则不支持
*/
public void setSelectionReadOnly(ZSheet sheet, ZRect rect, boolean value)
throws Exception {
if (sheet == null) {
sheet = getActiveSheet();
}
if (rect == null) {
rect = bookState.getActive().getSelection();
}
sheet.setSelectionReadOnly(rect, value);
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -