?? table.java
字號:
/*
$Author: $
$Date: $
$Revision: $
$NoKeywords: $
*/
/**
* 僥乕僽儖僋儔僗
*
* @see TableHeader
* @see TableBody
*/
package jp.co.ntl.awt;
import java.awt.*;
import java.awt.event.*;
import jp.co.ntl.awt.event.ChangeEvent;
import jp.co.ntl.awt.event.ChangeListener;
import jp.co.ntl.awt.event.SelectionSupport;
import jp.co.ntl.awt.event.SelectionEvent;
import jp.co.ntl.awt.event.SelectionListener;
public class Table extends Panel {
/**
*
*/
private static final long serialVersionUID = 1L;
private final int SIZE_DUMMY = 20;
private TableModel model;
private TableHeader header;
private TableBody body;
private ScrollPanel scrollPanel;
private SelectionSupport selection;
public Table(TableModel tm, int headerHeight, int rowHeight) {
if (tm == null) {
model = new DefaultTableModel();
} else {
model = tm;
}
model.setTable(this);
setLayout(null);
header = new TableHeader(model);
header.setSize(SIZE_DUMMY, headerHeight);
body = new TableBody(model, header, rowHeight);
model.addTableModelListener(header);
model.addTableModelListener(body);
header.addPropertyChangeListener(body);
scrollPanel = new ScrollPanel(body);
scrollPanel.setColumnHeaderView(header);
add(scrollPanel);
// Microsoft VM懳嶔
// Component(TableModel)偺戝偒偝偑曄傢偭偨偲偒偵
// componentResize僀儀儞僩偑憲傜傟偰偙側偄
model.addTableModelListener(scrollPanel);
scrollPanel.getViewport().addMouseListener(new MyMouseListener());
selection = new SelectionSupport();
body.getSelectionRowBuffer().addChangeListener(new MyChangeListener());
}
public Table(int headerHeight, int rowHeight) {
this(null, headerHeight, rowHeight);
}
public void setBounds(int x, int y, int width, int height) {
scrollPanel.setBounds(0, 0, width, height);
super.setBounds(x, y, width, height);
}
public void setBounds(Rectangle r) {
setBounds(r.x, r.y, r.width, r.height);
}
public void setSize(int width, int height) {
scrollPanel.setSize(width, height);
super.setSize(width, height);
}
public void setSize(Dimension d) {
setSize(d.width, d.height);
}
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
body.setEnabled(enabled);
scrollPanel.setEnabled(enabled);
header.setEnabled(enabled);
}
public void setMultiSelection(boolean multiSelection) {
body.setMultiSelection(multiSelection);
}
public boolean isMultiSelection() {
return body.isMultiSelection();
}
public void setDrawRuledLine(boolean drawRuledLine) {
body.setDrawRuledLine(drawRuledLine);
}
public boolean isDrawRuledLine() {
return body.isDrawRuledLine();
}
public void setTableCellRenderer(TableCellRenderer renderer) {
body.setTableCellRenderer(renderer);
}
public void setHeaderRenderer(TableCellRenderer renderer) {
header.setHeaderRenderer(renderer);
}
public void setWidthRatio(float[] widthRatio) {
header.setWidthRatio(widthRatio);
}
public void setWidths(int[] widths) {
header.setWidths(widths);
}
public int[] getSelectedRows() {
return body.getSelectedRows();
}
public int getSelectedCount() {
return body.getSelectedCount();
}
public void selectRow(int row) {
body.selectRow(row);
}
/**
* @param c 愝掕偡傞攚宨怓
*/
public void setColor(Color c) {
body.setBackground(c);
scrollPanel.getViewport().setBackground(c);
}
public TableHeader getTableHeader() {
return header;
}
public TableBody getTableBody() {
return body;
}
public void update(Graphics g) {
paint(g);
}
public void addSelectionListener(SelectionListener sl) {
selection.addSelectionListener(sl);
}
public void removeSelectionListener(SelectionListener sl) {
selection.removeSelectionListener(sl);
}
class MyMouseListener extends MouseAdapter {
public void mousePressed(MouseEvent me) {
// 暋悢峴慖戰壜擻側偲偒丄Viewport傪僋儕僢僋偡傞偲慖戰夝彍
if (body.isMultiSelection()) {
body.clearSelectedRows();
}
}
}
class MyChangeListener implements ChangeListener {
public void stateChanged(ChangeEvent ce) {
selection.fireSelectionEvent(new SelectionEvent(this));
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -