下面列出了javax.swing.JComponent#requestFocus ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void requestFocus(JComponent comp) {
Container container = SwingUtilities.getAncestorOfClass(TopComponent.class, comp);
if (container != null) {
((TopComponent)container).requestActive();
}
else {
Component f = comp;
do {
f = f.getParent();
if (f instanceof Frame) {
break;
}
} while (f != null);
if (f != null) {
f.requestFocus();
}
comp.requestFocus();
}
}
@Override
public void requestActive() {
super.requestActive();
JComponent tab = getSelectedTab();
if (tab != null) {
tab.requestFocus();
}
}
@Override
public void requestFocus() {
// redirect focus into terminal
JComponent selected = getSelected();
if (selected != null) {
selected.requestFocus();
} else {
super.requestFocus();
}
}
@Override
public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, final int row, final int column) {
final JComponent c = (JComponent) super.getTableCellEditorComponent(table, value, isSelected, row, column);
this.tableModel = table.getModel();
this.columnName = table.getColumnName(column);
this.modelRow = table.convertRowIndexToModel(row);
this.modelColumn = table.convertColumnIndexToModel(column);
this.tc = c instanceof JTextComponent ? (JTextComponent) c : null;
JPanel panel = new JPanel(new BorderLayout()) {
@Override
public void addNotify() {
super.addNotify();
c.requestFocus();
}
};
panel.add(c);
if (suppressEditorBorder) {
c.setBorder(BorderFactory.createEmptyBorder());
}
panel.add(customEditorButton, BorderLayout.EAST);
panel.revalidate();
panel.repaint();
return panel;
}
/**
* Request focus on the given component if it doesn't already have it
* and {@code isRequestFocusEnabled()} returns true.
*/
public static void adjustFocus(JComponent c) {
if (!c.hasFocus() && c.isRequestFocusEnabled()) {
c.requestFocus();
}
}