0

JFrame クラスと 2 つの JPanel クラスがあります。まず、Jframe main() が呼び出されたときに Panel1 を追加し、Panel1 の [Next>] ボタンをクリックすると、Panel2 を開きたいとします。

今私がしようとしているのは、jFrameObj.setContentPane(Panel1) を呼び出して Panel1 を開く JFrame を実行することです。その後、コントロールは Panel1 に移動し、同じ jFrameObj で setContentPane(Panel2) を実行するにはどうすればよいですか?

これは私の機能に対する正しいアプローチですか? 他のアプローチがある場合は、私をお勧めしますか?

4

1 に答える 1

2

これは、必要なタスクに対するCardLayoutの使用法を示す簡単なプログラムです。こちらの記事もご覧になることをお勧めします(2005 年以降なので、一部変更されている可能性があります)。

import java.awt.*;
import javax.swing.*;

public class CardLayoutTestApplet extends JApplet {

    @Override
    public void init() {
        final Container pane = getContentPane();
        final CardLayout paneLayout = new CardLayout();

        JPanel panel1 = new JPanel();
        JButton button1 = new JButton("Next>>");
        panel1.add(button1);

        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                paneLayout.show(pane, "Card2");
            }
        });

        JPanel panel2 = new JPanel();
        panel2.add(new JLabel("Second Panel"));

        pane.setLayout(paneLayout);
        pane.add(panel1, "Card1");
        pane.add(panel2, "Card2");
    }
}
于 2012-04-09T13:37:05.747 に答える