?? tablebody.java
字號:
selectedRows.removeOverRowCount(model.getRowCount());
} else {
setBounds(rOld.x, 0, d.width, 0);
selectedRows.removeAll();
}
if (backImage != null &&
(backImage.getHeight(this) != getSize().height || backImage.getWidth(this) != getSize().width)) {
invalidateBackImage();
}
invalidate();
getParent().repaint();
// fireTableEvent(new TableEvent(this));
}
/**
* 楍暆偑曄峏偝傟偨偲偒偵屇傃弌偝傟傞丅
* 攚宨怓偑
*/
public void propertyChange(PropertyChangeEvent pce) {
repaint();//
}
/** 埵抲偐傜峴斣崋傪庢摼 */
public int rowAtPoint(Point pt) {
int row = pt.y / rowHeight;
if (row >= model.getRowCount()) {
return (-1);
}
return row;
}
/** 埵抲偐傜楍斣崋傪庢摼 */
public int columnAtPoint(Point pt) {
int curWidth = 0;
int[] widths = header.getWidths();
for (int i = 0; i < model.getColumnCount(); i++) {
if ((pt.x >= curWidth) && (pt.x < curWidth + widths[i])) {
return i;
}
curWidth += widths[i];
}
return (-1);
}
/** 慖戰偝傟偰偄傞峴斣崋偺庢摼 */
public int[] getSelectedRows() {
return selectedRows.getSelectedRows();
}
public int getSelectedCount() {
return selectedRows.size();
}
public void clearSelectedRows() {
selectedRows.removeAll();
repaint();
fireTableEvent(new TableEvent(this));
}
public void addTableEventListener(TableEventListener tel) {
listeners.addElement(tel);
}
public void removeTableEventListener(TableEventListener tel) {
listeners.removeElement(tel);
}
// 慖戰峴偑曄壔偟偨偲偒
private void fireTableEvent(TableEvent te) {
Vector v;
synchronized(this) {
v = (Vector)listeners.clone();
}
for (int i = 0; i < v.size(); i++) {
TableEventListener tel = (TableEventListener)v.elementAt(i);
tel.rowSelectionChanged(te);
}
}
public void processMouseEvent(MouseEvent me) {
int id = me.getID();
if (id == MouseEvent.MOUSE_CLICKED) {
requestFocus();
if (me.getX() < getSize().width) {
if (AwtUtilities.isLeftMouseButton(me)) {
if (me.getClickCount() > 1) {
// Point pt = me.getPoint();
// int row = rowAtPoint(pt);
//fireMouseLeftButtonDoubleClicked(new TableEvent(getParent(), row));
}
}
}
} else if (id == MouseEvent.MOUSE_PRESSED) {
requestFocus();
int pressedRow = rowAtPoint(me.getPoint());
int pressedColumn = columnAtPoint(me.getPoint());
if (pressedRow != -1 && pressedColumn != -1) {
//塃儃僞儞偺僋儕僢僋帪
if (AwtUtilities.isRightMouseButton(me)) {
Point pt = me.getPoint();
int row = rowAtPoint(pt);
// int column = columnAtPoint(pt);
if (row != -1) {
// fireMouseRightButtonPressed(new TableEvent(this, row, column, vecRowText));
}
}
if (pressedRow < model.getRowCount()) {
//僨乕僞偑偁傞偲偙傠傪PRESS
if (me.isControlDown() && multiSelection && AwtUtilities.isLeftMouseButton(me)) {
selectedRows.changeState(pressedRow);
//fireTableEvent(new TableEvent(this));
} else if (me.isShiftDown() && multiSelection && AwtUtilities.isLeftMouseButton(me) && selectedRows.size() > 0) {
int lastSelectedRow = selectedRows.getLastSelectedRow();
if (lastSelectedRow >= 0) {
if (lastSelectedRow < pressedRow) {
for (int i = lastSelectedRow; i <= pressedRow; i++) {
selectedRows.add(i);
}
} else {
for (int i = lastSelectedRow; i >= pressedRow; i--) {
selectedRows.add(i);
}
}
} else {
//僔僼僩僉乕偑墴偝傟偰偄傞偑丄嵟屻偵慖戰偝傟偨峴偑晄柧
selectedRows.add(pressedRow);
}
} else if (AwtUtilities.isRightMouseButton(me)) {
if (selectedRows.include(pressedRow)) {
//fireMouseRightButtonPressed(new TableEvent(getParent(), pressedRow));
} else {
selectedRows.set(pressedRow);
}
} else {
selectedRows.set(pressedRow);
}
//fireRowSelectionChanged(new TableEvent(this, pressedRow, pressedColumn, vecRowText));
} else {
//僨乕僞偺側偄偲偙傠側傜慖戰傪夝彍
selectedRows.removeAll();
//fireRowSelectionChanged(new TableEvent(this, -1, -1, vecRowText));
}
repaint();
fireTableEvent(new TableEvent(this));
}
}
super.processMouseEvent(me);
}
class MyFocusListener implements FocusListener {
public void focusGained(FocusEvent fe) {
repaint();
}
public void focusLost(FocusEvent fe) {
repaint();
}
}
public void processKeyEvent(KeyEvent ke) {
if (ke.getID() == KeyEvent.KEY_PRESSED) {
int row;
switch (ke.getKeyCode()) {
case KeyEvent.VK_UP:
row = selectedRows.getLastSelectedRow();
if (row < 0) {
return;
} else if (row == 0) {
//selectedRows.set(row);
} else {
selectedRows.set(--row);
// int parentHeight = getParent().getSize().height;
Point p = getLocation();
if (rowHeight * row < -p.y) {
setLocation(p.x, -rowHeight * row);
invalidate();
}
}
break;
case KeyEvent.VK_DOWN:
row = selectedRows.getLastSelectedRow();
if (row < 0) {
return;
} else if (row == model.getRowCount() - 1) {
//selectedRows.set(row);
} else {
selectedRows.set(++row);
int parentHeight = getParent().getSize().height;
Point p = getLocation();
if (rowHeight * (row + 1) > -p.y + parentHeight) {
setLocation(p.x, -(rowHeight * (row + 1) - parentHeight));
invalidate();
}
}
//fireRowSelectionChanged(new TableEvent(this, selectedRows[0], -1, vecRowText));
break;
case KeyEvent.VK_ENTER:
if (selectedRows.size() == 1) {
//fireMouseLeftButtonDoubleClicked(new TableEvent(getParent(), selectedRows.getLastSelectedRow()));
}
return;
case KeyEvent.VK_PAGE_UP:
break;
case KeyEvent.VK_PAGE_DOWN:
break;
case KeyEvent.VK_HOME:
break;
case KeyEvent.VK_END:
break;
default:
return;
}
repaint();
fireTableEvent(new TableEvent(this));
}
super.processKeyEvent(ke);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -