Swing Frames - frage zum focus



  • Hi..

    also wenn man zb mehre JFrames nebeneinander anzeigt kann man beliebig den einen oder anderen mit der maus auswählen ... ich möchte aber dass ein geöffneter Frame den focus solange behält bis dieser geschlossen ist.
    weis jemand wie ich das anstellen kann 🤡 ?

    mfg dom



  • wie wärs mim JDialog stat JFrame?

    soweit ich weiss, hat JFrame nicht die möglichkeit sich modal zu verhalten.



  • Wie bereits erwähnt ist ein modaler JDialog die einfachste und naheliegendste Sache,
    mit einem JFrame lässt sich modales Verhalten nur unzureichend simulieren:

    import java.awt.event.*;
    import javax.swing.*;
    
    public class C extends JFrame {
    
        private JFrame x;
    
        public C() {
            super("mainFrame");
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            setBounds(10, 10, 250, 150);
    
            x = new JFrame("subFrame");
            x.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            x.setBounds(300, 10, 250, 150);
            x.setVisible(true);
            x.addFocusListener(new FocusAdapter() {
                @Override
                public void focusLost(FocusEvent e) {
                    if(e.getOppositeComponent() == C.this) {
                        C.this.x.requestFocus();
                    }
                }
            });
        }
    
        public static void main(String[] args) {
            Runnable r = new Runnable() {
                @Override
                public void run() {
                    new C().setVisible(true);
                }
            };
            SwingUtilities.invokeLater(r);
        }
    }
    

    Wie gesagt, nimm einen JDialog und mach ihn modal 😉


Anmelden zum Antworten