⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tablebody.java

📁 打印管理程序,测试完全通过.windows开发环境.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            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 + -