1

一緒に仕事をしているクラスが3つあります。最初のもの(JFrame)はSplashクラス(JPanel)を呼び出します。一定の時間が経過したら、パネルを削除して、Menuクラスの別のパネルと交換したいと思います。

私のメインクラスは現在このようになっています(initメソッドは同じクラスのメインメソッドによって呼び出されます)...

public void init() throws InterruptedException{
        setLayout(new BorderLayout());

        Menu menu = new Menu(this);
        Splash splash = new Splash(this);

        this.getContentPane().add(splash, BorderLayout.CENTER);
        validate();

        setVisible(true);

        Thread.sleep(1000);

        this.removeAll();

        invalidate();
        this.getContentPane().add(menu, BorderLayout.CENTER);
        revalidate();

        setVisible(true);

    }

Splashクラスはそのように見えます...

public Splash(Survive survive) throws InterruptedException{
        Color c1 = new Color(255, 255, 255);
        this.setBackground(c1);

        JLabel jl1 = new JLabel();
        jl1.setIcon(new ImageIcon("res/splash.png"));
        this.add(jl1);

    }

そして、Menuクラスは次のように続きます...

public Menu(Survive survive){
        ImageIcon i1 = new ImageIcon("res/title.png");

        this.setLayout(new FlowLayout(FlowLayout.CENTER));
        this.setLayout(new GridBagLayout());

        Color c1 = new Color(96, 96, 96);
        this.setBackground(c1);

        JButton b0 = new JButton(i1);
        b0.setPreferredSize(new Dimension(800, 250));
        b0.setRolloverIcon(i1);
        b0.setOpaque(false);
        b0.setBorderPainted(false);
        gbc.gridx = 0;
        gbc.gridy = -2;
        this.add(b0, gbc);

        JButton b1 = new JButton("Singleplayer");
        b1.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
        gbc.gridx = 0;
        gbc.gridy = 1;
        this.add(b1, gbc);

        JButton b2 = new JButton("Options");
        b2.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
        gbc.gridx = 0;
        gbc.gridy = 2;
        this.add(b2, gbc);

        JButton b3 = new JButton("Credits");
        b3.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
        gbc.gridx = 0;
        gbc.gridy = 3;
        this.add(b3, gbc);

        JButton b4 = new JButton("Options");
        b4.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
        gbc.gridx = 0;
        gbc.gridy = 4;
        this.add(b4, gbc);

    }

このすべての目的は、スイングコンポーネントを使用してスプラッシュスクリーンを作成することです。これを行うにはもっと簡単な方法があることに気づきましたが、この方法は私のニーズに合っていると思います。

アドバイスをいただければ幸いです。

4

1 に答える 1

2

ワンショットjavax.swing.Timerを使用してイベントを発生させCardLayout、コンポーネント間でホールド/スワップします。

于 2013-02-22T02:29:33.167 に答える