0

だから私は2つのJPanelを持ちたいです。JPanel を上に (introPanel)、JPanel を下に (mainPanel)。keyListener を JFrame に追加したいので、キーを押すとアップ パネルが非表示になり、ダウン パネルが表示されます。コードはどのように機能しますか?

class MainFrame extends JFrame {
    private MainPanel mainPanel = new MainPanel();
    private IntroPanel introPanel = new IntroPanel();

    MainFrame() {
        add(mainPanel);
        add(introPanel);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent ev) {
                introPanel.setVisible(false);
            }
        });
        pack();
        setVisible(true);
    }

}

このコードは introPanel を隠しません。どうしたの?

4

1 に答える 1

3

位置に配置できるコンポーネントは 1 つだけBorderLayout.CENTERなので、追加すると がintroPanel移動します。表示したい場合は、次mainPanelを追加する必要があります。mainPanel

add(mainPanel);
revalidate();
repaint();

CardLayoutの使用を検討してください。この方法でコンポーネントを「積み重ねる」という概念をサポートします。

また、Swing ベースのアプリケーションにキー バインディングを使用することも検討してください。とは異なりKeyListeners、キー バインディングは と対話するためにフォーカスを必要としませんKeyEvents

于 2013-02-19T20:19:40.513 に答える