?? scrollpanel.java
字號:
/*
$Author: $
$Date: $
$Revision: $
$NoKeywords: $
*/
package jp.co.ntl.awt;
import java.awt.*;
import java.awt.event.*;
import jp.co.ntl.awt.event.ViewListener;
import jp.co.ntl.awt.event.TableModelListener;
import jp.co.ntl.awt.event.TableModelEvent;
public class ScrollPanel extends Container implements AdjustmentListener, ViewListener, TableModelListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final int SCROLL_WIDTH = 15;
private Component view = null;
private Component columnHeaderView = null;
private Viewport viewport;
private Scrollbar scroll;
public ScrollPanel(Component view) {
this.view = view;
viewport = new Viewport(view);
viewport.add(view);
add(viewport);
viewport.addViewListener(this);
// Microsoft VM懳嶔
// 僨僼僅儖僩僐儞僗僩儔僋僞偼惓忢偵摦嶌偟側偄
//scroll = new Scrollbar();
//add(scroll);
//scroll.addAdjustmentListener(this);
}
// Microsoft VM懳嶔
// Component(TableModel)偺戝偒偝偑曄傢偭偨偲偒偵
// componentResize僀儀儞僩偑憲傜傟偰偙側偄
public void tableChanged(TableModelEvent tme) {
setScroll();
}
public void setColumnHeaderView(Component columnHeaderView) {
this.columnHeaderView = columnHeaderView;
add(columnHeaderView);
}
public Viewport getViewport() {
return viewport;
}
public void adjustmentValueChanged(AdjustmentEvent ae) {
Object source = ae.getSource();
if (source == scroll) {
viewport.setViewTop(ae.getValue());
}
}
public void viewMoved(ComponentEvent ce) {
if (scroll.getValue() != viewport.getViewTop()) {
scroll.setValue(viewport.getViewTop());
}
}
public void viewResized(ComponentEvent ce) {
setScroll();
}
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if (enabled) {
setScroll();
} else {
if (scroll != null) {
scroll.setEnabled(false);
}
}
}
private void setScroll() {
if (scroll == null) {
return;
}
Scrollable s = (Scrollable)view;
scroll.setBlockIncrement(s.getScrollableBlockIncrement(viewport.getViewTop()));
scroll.setUnitIncrement(s.getScrollableUnitIncrement(viewport.getViewTop()));
scroll.setMinimum(0);
if (s.getScrollableHeight() <= viewport.getSize().height) {
if (scroll.isEnabled()) {
scroll.setEnabled(false);
}
} else {
if (!scroll.isEnabled()) {
scroll.setEnabled(true);
}
scroll.setVisibleAmount(viewport.getSize().height);
scroll.setMaximum(s.getScrollableHeight());
}
}
public void setBounds(int x, int y, int width, int height) {
super.setBounds(x, y, width, height);
if (columnHeaderView != null) {
int headerHeight = columnHeaderView.getSize().height;
columnHeaderView.setBounds(0, 0, width - SCROLL_WIDTH, headerHeight);
viewport.setBounds(0, headerHeight, width - SCROLL_WIDTH, height - headerHeight);
// Microsoft VM懳嶔
// 僨僼僅儖僩僐儞僗僩儔僋僞偼惓忢偵摦嶌偟側偄
scroll = new Scrollbar(Scrollbar.VERTICAL, 0, height - headerHeight, 0, height - headerHeight);
add(scroll);
scroll.addAdjustmentListener(this);
//
scroll.setBounds(width - SCROLL_WIDTH, headerHeight, SCROLL_WIDTH, height - headerHeight);
} else {
viewport.setBounds(0, 0, width - SCROLL_WIDTH, height);
// Microsoft VM懳嶔
// 僨僼僅儖僩僐儞僗僩儔僋僞偼惓忢偵摦嶌偟側偄
scroll = new Scrollbar(Scrollbar.VERTICAL, 0, height, 0, height);
add(scroll);
scroll.addAdjustmentListener(this);
//
scroll.setBounds(width - SCROLL_WIDTH, 0, SCROLL_WIDTH, height);
}
setScroll();
}
public void setBounds(Rectangle r) {
setBounds(r.x, r.y, r.width, r.height);
}
public void setSize(int width, int height) {
super.setSize(width, height);
if (columnHeaderView != null) {
int headerHeight = columnHeaderView.getSize().height;
columnHeaderView.setSize(width - SCROLL_WIDTH, headerHeight);
viewport.setSize(width - SCROLL_WIDTH, height - headerHeight);
// Microsoft VM懳嶔
// 僨僼僅儖僩僐儞僗僩儔僋僞偼惓忢偵摦嶌偟側偄
scroll = new Scrollbar(Scrollbar.VERTICAL, 0, height - headerHeight, 0, height - headerHeight);
add(scroll);
scroll.addAdjustmentListener(this);
//
scroll.setSize(SCROLL_WIDTH, height - headerHeight);
} else {
viewport.setSize(width - SCROLL_WIDTH, height);
// Microsoft VM懳嶔
// 僨僼僅儖僩僐儞僗僩儔僋僞偼惓忢偵摦嶌偟側偄
scroll = new Scrollbar(Scrollbar.VERTICAL, 0, height, 0, height);
add(scroll);
scroll.addAdjustmentListener(this);
//
scroll.setSize(SCROLL_WIDTH, height);
}
setScroll();
}
public void setSize(Dimension d) {
setSize(d.width, d.height);
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
Color color = null;
if (columnHeaderView instanceof TableHeader) {
color = ((TableHeader)columnHeaderView).getHeaderRenderer().getBackground(false, true);
}
if (color == null) {
g.setColor(columnHeaderView.getBackground());
} else {
g.setColor(color);
}
g.fill3DRect(getSize().width - SCROLL_WIDTH, 0, SCROLL_WIDTH, columnHeaderView.getSize().height, true);
super.paint(g);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -