javax.swing.JTable#getCellRect ( )源码实例Demo

下面列出了javax.swing.JTable#getCellRect ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: netbeans   文件: ComboBoxTableCellEditor.java
/**********************************************************************
    *  Is the cell editable? If the mouse was pressed at a margin
    *  we don't want the cell to be editable.
    *
    *  @param  evt  The event-object.
    *
    *  @interfaceMethod javax.swing.table.TableCellEditor
    *********************************************************************/

public boolean isCellEditable (EventObject evt)
{

       this.startEditingEvent = evt;
       if  (evt instanceof MouseEvent  &&  evt.getSource () instanceof JTable)
       {
           MouseEvent me = (MouseEvent) evt;
           JTable table = (JTable) me.getSource ();
           Point pt = new Point (me.getX (), me.getY ());
           int row = table.rowAtPoint (pt);
           int col = table.columnAtPoint (pt);
           Rectangle rec = table.getCellRect (row, col, false);
           if  (me.getY () >= rec.y + rec.height  ||  me.getX () >= rec.x + rec.width)
           {
               return false;
           }
       }

       return super.isCellEditable (evt);

}
 
源代码2 项目: netbeans   文件: HistoryUtils.java
public static String computeFitText(JTable table, int rowIdx, int columnIdx, String text) {
    if(text == null) text = "";                                             // NOI18N
    if (text.length() <= VISIBLE_START_CHARS + 3) return text;

    FontMetrics fm = table.getFontMetrics(table.getFont());
    int width = table.getCellRect(rowIdx, columnIdx, false).width;

    String sufix = "...";                                                   // NOI18N
    int sufixLength = fm.stringWidth(sufix + " ");                          // NOI18N
    int desired = width - sufixLength;
    if (desired <= 0) return text;

    for (int i = 0; i <= text.length() - 1; i++) {
        String prefix = text.substring(0, i);
        int swidth = fm.stringWidth(prefix);
        if (swidth >= desired) {
            return prefix.length() > 0 ? prefix + sufix: text;
        }
    }
    return text;
}
 
源代码3 项目: netbeans   文件: TableRendererTest.java
@Override
public boolean isCellEditable(EventObject anEvent) {
    if (anEvent.getSource() instanceof JTable) {
        JTable table = (JTable) anEvent.getSource();
        if (anEvent instanceof MouseEvent) {
            MouseEvent event = (MouseEvent) anEvent;
            Point p = event.getPoint();
            int row = table.rowAtPoint(p);
            int col = table.columnAtPoint(p);
            Rectangle rect = table.getCellRect(row, col, true);
            p.translate(-rect.x, -rect.y);
            System.out.println("isCellEditable("+anEvent+")");
            System.out.println("Point "+p+"in rectangle "+rect);
            if (p.x > rect.width - 24) {
                // last 24 points not editable
                return false;
            }
        }
    }
    return true;
}
 
源代码4 项目: Bytecoder   文件: SwingUtilities2.java
/**
 * Returns true if the given point is outside the preferredSize of the
 * item at the given row of the table.  (Column must be 0).
 * Does not check the "Table.isFileList" property. That should be checked
 * before calling this method.
 * This is used to make Windows {@literal L&F} JFileChooser act
 * like native dialogs.
 */
public static boolean pointOutsidePrefSize(JTable table, int row, int column, Point p) {
    if (table.convertColumnIndexToModel(column) != 0 || row == -1) {
        return true;
    }
    TableCellRenderer tcr = table.getCellRenderer(row, column);
    Object value = table.getValueAt(row, column);
    Component cell = tcr.getTableCellRendererComponent(table, value, false,
            false, row, column);
    Dimension itemSize = cell.getPreferredSize();
    Rectangle cellBounds = table.getCellRect(row, column, false);
    cellBounds.width = itemSize.width;
    cellBounds.height = itemSize.height;

    // See if coords are inside
    // ASSUME: mouse x,y will never be < cell's x,y
    assert (p.x >= cellBounds.x && p.y >= cellBounds.y);
    return p.x > cellBounds.x + cellBounds.width ||
            p.y > cellBounds.y + cellBounds.height;
}
 
源代码5 项目: ghidra   文件: MemoryMapPluginTest.java
private void editNameCell(final JTable table, String name) {
	final int nameColumn = MemoryMapModel.NAME;
	final int namedRow = getNamedRow(table, nameColumn, name);

	runSwing(() -> {
		table.getSelectionModel().setSelectionInterval(namedRow, namedRow);
		table.scrollRectToVisible(table.getCellRect(namedRow, nameColumn, true));
	});

	Rectangle rect = table.getCellRect(namedRow, nameColumn, true);
	Point tablePoint = table.getLocationOnScreen();
	final int x = tablePoint.x + rect.x + (rect.width / 2);
	final int y = tablePoint.y + rect.y + (rect.height / 2);
	runSwing(() -> {
		MouseEvent editMouseEvent = new MouseEvent(table, MouseEvent.MOUSE_CLICKED,
			System.currentTimeMillis(), 0, x, y, 2, false);
		table.editCellAt(namedRow, nameColumn, editMouseEvent);
	});

	assertEquals(true, table.isEditing());

	Component editorComponent = table.getEditorComponent();
	assertNotNull(editorComponent);
	assertTrue(editorComponent instanceof JTextField);
	final JTextField editorField = (JTextField) editorComponent;
	editorField.selectAll();
	runSwing(() -> editorField.requestFocus());
	waitForPostedSwingRunnables();

	triggerText(editorField, ".myText\n");

	assertEquals(".myText", table.getModel().getValueAt(namedRow, nameColumn));
}
 
源代码6 项目: marathonv5   文件: RComponentFactory.java
/**
 * Sets the location to a point the table.
 *
 * @param table
 * @param location
 */
private void setLocationForTable(JTable table, Point location) {
    if (location != null) {
        Rectangle cellRect = table.getCellRect(table.getEditingRow(), table.getEditingColumn(), false);
        location.setLocation(cellRect.getLocation());
    }
}
 
源代码7 项目: netbeans   文件: ResultsOutlineCellRenderer.java
private String computeFitText(JTable table, int rowIdx, int columnIdx,
        String text) {
    if (text == null) {
        text = ""; // NOI18N
    }
    if (text.length() <= 3) {
        return text;
    }

    FontMetrics fm = table.getFontMetrics(table.getFont());
    int width = table.getCellRect(rowIdx, columnIdx, false).width;

    String prefix = "...";                                          //NOI18N
    int sufixLength = fm.stringWidth(prefix + "  ");                 //NOI18
    int desired = width - sufixLength - 15;
    if (desired <= 0) {
        return text;
    }

    for (int i = 1; i <= text.length() - 1; i++) {
        String part = text.substring(text.length() - i, text.length());
        int swidth = fm.stringWidth(part);
        if (swidth >= desired) {
            return part.length() > 0 ? prefix + part + " " : text;  //NOI18N
        }
    }
    return text;
}
 
源代码8 项目: netbeans   文件: ButtonCellRenderer.java
@Override
public Component getTableCellRendererComponent (
    JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column
) {
    JLabel c = (JLabel)defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    
    if (value instanceof String) {
        Rectangle cellRect = table.getCellRect(row, column, false);
        String scCell = (String) value;
        Dimension d = new Dimension((int) cellRect.getWidth(), (int) cellRect.getHeight());
        if (panel == null)
            panel = new ShortcutCellPanel(scCell);
        panel.setText(scCell);
        panel.setSize(d);

        if (isSelected) {
            panel.setBgColor(table.getSelectionBackground());
            if (UIManager.getLookAndFeel ().getID ().equals ("GTK"))
                panel.setFgCOlor(table.getForeground(), true);
            else
                panel.setFgCOlor(table.getSelectionForeground(), true);
        } else {
            panel.setBgColor(c.getBackground());
            panel.setFgCOlor(c.getForeground(), false);
        }
        if (hasFocus) {
            panel.setBorder(c.getBorder());
        } else {
            panel.setBorder(null);
        }

        return panel;
    }
    else {
        return c;
    }
}
 
源代码9 项目: netbeans   文件: KeymapPanel.java
private boolean showPopupMenu(int row, int col, int x, int y) {
    JTable table = actionsTable;
    
    if (col != 1) {
        return false;
    }
    
    Object valueAt = table.getValueAt(row, col);
    ShortcutCellPanel scCell = (ShortcutCellPanel) table.getCellRenderer(row, col).getTableCellRendererComponent(table, valueAt, true, true, row, col);
    Rectangle cellRect = table.getCellRect(row, col, false);
    JButton button = scCell.getButton();
    if (x < 0  || x > (cellRect.x + cellRect.width - button.getWidth())) { //inside changeButton
        boolean isShortcutSet = scCell.getTextField().getText().length() != 0;
        final ShortcutPopupPanel panel = (ShortcutPopupPanel) popup.getComponents()[0];
        panel.setDisplayAddAlternative(isShortcutSet);
        panel.setRow(row);

        if (x == -1 || y == -1) {
            x = button.getX() + 1;
            y = button.getY() + 1;
        }
        panel.setCustomProfile(keymapModel.getMutableModel().isCustomProfile(keymapModel.getMutableModel().getCurrentProfile()));
        popup.show(table, x, y);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                panel.requestFocus();
            }
        });
        popup.requestFocus();
        return true;
    }
    return false;
}
 
源代码10 项目: ghidra   文件: PathnameTableModel.java
private void notifyDataChanged(JTable table, int newIndex) {
	fireTableDataChanged();
	table.setRowSelectionInterval(newIndex, newIndex);
	Rectangle rect = table.getCellRect(newIndex, 0, true);
	table.scrollRectToVisible(rect);
}
 
源代码11 项目: marathonv5   文件: JTableCellJavaElement.java
private boolean isVisible(JTable table, int row, int col) {
    Rectangle visibleRect = table.getVisibleRect();
    Rectangle cellRect = table.getCellRect(row, col, false);
    return SwingUtilities.isRectangleContainingRectangle(visibleRect, cellRect);
}
 
源代码12 项目: netbeans   文件: ExtTestCase.java
/** Send a mouse pressed to a particular cell of a JTable */
protected static void pressCell(JTable tbl, int x, int y) throws Exception {
    Rectangle r = tbl.getCellRect(x, y, false);
    System.err.println("Pressing table at " + (r.x+5) + "," + r.y+5);
    press(tbl, r.x+5, r.y+5);
}
 
源代码13 项目: netbeans   文件: TabDataRenderer.java
@Override
public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) {
    renderer.clear();
    Rectangle rect = table.getCellRect( row, column, true );
    renderer.setSize( rect.width, rect.height );
    if( value instanceof TabData ) {
        TabData tab = ( TabData ) value;
        String text = tab.getText();
        Icon icon = tab.getIcon();
        Color colBackground = isSelected ? table.getSelectionBackground() : table.getBackground();
        Color colForeground = isSelected ? table.getSelectionForeground() : table.getForeground();

        boolean isActive = (activeBackground != null || underlineColor != null)
            ? TabbedImpl.isActive(table) : false;
        if (!isSelected && isActive && activeBackground != null) {
            colBackground = activeBackground;
        }

        for( TabDecorator td : decorators ) {
            Color c = td.getBackground( tab, isSelected );
            if( null != c )
                colBackground = c;
            c = td.getForeground( tab, isSelected );
            if( null != c )
                colForeground = c;

            String s = td.getText( tab );
            if( null != s )
                text = s;

            Icon i = td.getIcon( tab );
            if( null != i ) {
                icon = i;
            }
        }
        boolean isHover = (hoverBackground != null && TabTableUI.isHover(table, row, column));
        if (isHover) {
            colBackground = hoverBackground;
        }
        renderer.label.setText( text );
        renderer.label.setIcon( icon );
        renderer.label.setFont( table.getFont() );
        renderer.setBackground( colBackground );
        renderer.label.setForeground( colForeground );
        renderer.tabData = tab;
        renderer.isSelected = isSelected;
        renderer.isActive = isActive;
        renderer.tabsLocation = (table instanceof TabTable) ? ((TabTable)table).getTabsLocation() : JTabbedPane.TOP;

        if( table instanceof TabTable ) {
            TabTable tabTable = ( TabTable ) table;
            if( isClosable(tab) ) {
                boolean inCloseButton = tabTable.isCloseButtonHighlighted( row, column );
                renderer.closeButton.setVisible( true );
                renderer.closeButton.getModel().setRollover( inCloseButton );
                renderer.closeButton.getModel().setArmed( inCloseButton );
            } else {
                renderer.closeButton.setVisible( false );
            }
        }
    }
    return renderer;
}
 
源代码14 项目: littleluck   文件: HyperlinkCellRenderer.java
@Override
public void mouseMoved(MouseEvent event) {
    // This should only be called if underlineOnRollover is true
    JTable table = (JTable) event.getSource();

    // Locate the table cell under the event location
    int oldHitColumnIndex = hitColumnIndex;
    int oldHitRowIndex = hitRowIndex;

    checkIfPointInsideHyperlink(event.getPoint());

    if (hitRowIndex != oldHitRowIndex ||
            hitColumnIndex != oldHitColumnIndex) {
        if (hitRowIndex != -1) {
            if (tableCursor == null) {
                tableCursor = table.getCursor();
            }
            table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        } else {
            table.setCursor(tableCursor);
        }

        // repaint the cells affected by rollover
        Rectangle repaintRect;
        if (hitRowIndex != -1 && hitColumnIndex != -1) {
            // we need to repaint new cell with rollover underline
            // cellRect already contains rect of hit cell
            if (oldHitRowIndex != -1 && oldHitColumnIndex != -1) {
                // we also need to repaint previously underlined hyperlink cell
                // to remove the underline
                repaintRect = cellRect.union(
                        table.getCellRect(oldHitRowIndex, oldHitColumnIndex, false));
            } else {
                // we don't have a previously underlined hyperlink, so just repaint new one'
                repaintRect = table.getCellRect(hitRowIndex, hitColumnIndex, false);
            }
        } else {
            // we just need to repaint previously underlined hyperlink cell
            //to remove the underline
            repaintRect = table.getCellRect(oldHitRowIndex, oldHitColumnIndex, false);
        }
        table.repaint(repaintRect);
    }

}
 
源代码15 项目: beautyeye   文件: HyperlinkCellRenderer.java
@Override
public void mouseMoved(MouseEvent event) {
    // This should only be called if underlineOnRollover is true
    JTable table = (JTable) event.getSource();

    // Locate the table cell under the event location
    int oldHitColumnIndex = hitColumnIndex;
    int oldHitRowIndex = hitRowIndex;

    checkIfPointInsideHyperlink(event.getPoint());

    if (hitRowIndex != oldHitRowIndex ||
            hitColumnIndex != oldHitColumnIndex) {
        if (hitRowIndex != -1) {
            if (tableCursor == null) {
                tableCursor = table.getCursor();
            }
            table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        } else {
            table.setCursor(tableCursor);
        }

        // repaint the cells affected by rollover
        Rectangle repaintRect;
        if (hitRowIndex != -1 && hitColumnIndex != -1) {
            // we need to repaint new cell with rollover underline
            // cellRect already contains rect of hit cell
            if (oldHitRowIndex != -1 && oldHitColumnIndex != -1) {
                // we also need to repaint previously underlined hyperlink cell
                // to remove the underline
                repaintRect = cellRect.union(
                        table.getCellRect(oldHitRowIndex, oldHitColumnIndex, false));
            } else {
                // we don't have a previously underlined hyperlink, so just repaint new one'
                repaintRect = table.getCellRect(hitRowIndex, hitColumnIndex, false);
            }
        } else {
            // we just need to repaint previously underlined hyperlink cell
            //to remove the underline
            repaintRect = table.getCellRect(oldHitRowIndex, oldHitColumnIndex, false);
        }
        table.repaint(repaintRect);
    }

}
 
 方法所在类
 同类方法