java - 如何请求JWindow临时焦点? (Java 1.7)

标签 java swing focus components jwindow

是否可以请求 JWindow 临时焦点?有一个方法protected boolean requestFocusInWindow(booleantemporary),但该方法是 protected 。

最佳答案

已经找到了解决方案 - 在扩展 JWindow 的类中创建了此方法:

@Override
public boolean requestFocusInWindow(boolean temporary) {
    return super.requestFocusInWindow(temporary);
}

现在我可以请求扩展 JWindow 的组件的临时焦点。我将它用于 JTextField 的自定义弹出菜单,如果在弹出窗口可见时选择插入符号颜色,则会更改(当然 - textField.setCaret(newhighlightCaret()); 是必要的):

private class HighlightCaret extends DefaultCaret {

    private final Highlighter.HighlightPainter unfocusedPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.RED);
    private final Highlighter.HighlightPainter focusedPainter = new DefaultHighlighter.DefaultHighlightPainter(new Color(10, 36, 106));
    private boolean isTemporary;

    private HighlightCaret() {
        setBlinkRate(500);
    }

    @Override
    protected Highlighter.HighlightPainter getSelectionPainter() {
        return isTemporary ? unfocusedPainter : focusedPainter;
    }

    @Override
    public void setSelectionVisible(boolean hasFocus) {
        super.setSelectionVisible(false);
        if (hasFocus) {
            super.setSelectionVisible(true);
        }
    }

    @Override
    public void focusGained(FocusEvent e) {
        isTemporary = false;
        super.focusGained(e);
    }

    @Override
    public void focusLost(FocusEvent e) {
        isTemporary = e.isTemporary();
        super.focusLost(e);
    }
}

关于java - 如何请求JWindow临时焦点? (Java 1.7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302594/

相关文章:

java - 插入文件 : The access control list value is invalid 时出现 Azure Data Lake 错误

java - JFrame 总是为 Action 监听器内的变量输出 null

java - 如何在 java swing 中为我的程序添加整数输入?

javascript - 表单输入在 IE 中失去对滚动条单击的关注

java - Maven + JSF 2 + 谷歌应用引擎 : 404 error

java - 用于枚举接口(interface)的 Spring @ResponseBody 和 Jackson JsonSerializer

java - 除非先单击 JButton,否则 keyPressed 不起作用

安卓用户界面 : No focus marker when using hardware keyboard/barcode scanner

java - 如何在 Swing/Nimbus 中的一个组件上停用焦点矩形

java - 什么是 AsyncTask(或 AsyncResult)以及它通常如何用于 Android?