package ddddbb.gui; import java.awt.CardLayout; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.InputVerifier; import javax.swing.JComponent; import javax.swing.JPanel; import ddddbb.game.Main.ShowedScreenEnum; import ddddbb.gen.AChangeListener; @SuppressWarnings("serial") public class ContentPane extends JPanel { //by some reason with this focus listener buttons cant be pressed anymore //TODO remove debugging code protected final FocusListener mainFocusListener; private final CardLayout mainPanelCardLayout; /** * This is the default constructor */ public ContentPane(final ShowedScreenEnum showedScreen) { mainFocusListener = new FocusListener() { public void focusGained(FocusEvent e1) { System.out.println("Main screen got input focus."); } public void focusLost(FocusEvent e1) { System.out.println("Main screen lost input focus."); showedScreen.MAIN.requestFocusInWindow(); } }; showedScreen.MAIN.requestFocusInWindow(); //this.setSize(300, 200); mainPanelCardLayout = new CardLayout(); setLayout(mainPanelCardLayout); showedScreen.addAsCards(this,mainPanelCardLayout); new AChangeListener() { public void stateChanged() { if (showedScreen.sel() == showedScreen.MAIN) { showedScreen.MAIN.setInputVerifier(new InputVerifier() { @Override public boolean verify(JComponent input) { // this assures that focus never leaves this window return false; } }); // showedScreen.MAIN.addFocusListener(mainFocusListener); } else { showedScreen.MAIN.setInputVerifier(null); // showedScreen.MAIN.removeFocusListener(mainFocusListener); } showedScreen.sel().requestFocusInWindow(); } }.addTo(showedScreen); } }