【问题标题】:Mantaining focus in application even when it have subwindows即使应用程序有子窗口也能保持焦点
【发布时间】:2012-12-18 22:08:19
【问题描述】:

我需要实现一个例程,以确保应用程序永远不会失去其他应用程序的焦点(但是当它被最小化时,我不应该强迫它回来)。所以我决定在主窗口中实现WindowFocusListener:

public class DialogoPrincipal extends JFrame implements WindowFocusListener {

    public DialogoPrincipal() {
        initComponents();
        this.addWindowFocusListener(this);
    }

    @Override
    public void windowGainedFocus(WindowEvent e) {
        //Do nothing
    }

    @Override
    public void windowLostFocus(WindowEvent e) {
        this.toFront();
    }

    /*hidden code*/
}

当主窗口不显示任何子窗口时效果很好。但是当打开一些子窗口时,我无法强制应用程序获得焦点。 有没有一种方法可以强制应用程序中的焦点,即使应用程序有子窗口,或者我需要在所有对话框中实现 WindowFocusListener? 如果我需要实现这个接口,我该怎么做才能让 JOptionPane.showMessageDialog(...) 不失去焦点?

【问题讨论】:

  • 为了更好的帮助,请尽快发布SSCCE,大约JFrame,两个JDialogsJButton 调用JOptionPanecould be based on
  • 您可以在每个子窗口上调用setFocusableWindowState(false)

标签: java swing focus focuslistener


【解决方案1】:

【讨论】:

    【解决方案2】:

    我解决了它实现一个由所有子窗口继承的抽象类:

    public abstract class DialogoFocado extends JDialog implements WindowFocusListener {
    
        public DialogoFocado(Frame owner) {
            super(owner);
            this.addWindowFocusListener(this);
        }
    
        @Override
        public void windowGainedFocus(WindowEvent e) {
        }
    
        @Override
        public void windowLostFocus(WindowEvent e) {
            this.toFront();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 2023-03-15
      • 2011-01-27
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      相关资源
      最近更新 更多