1

Javaでアプリのようなウィザードを作成したいと思います。それぞれラベルと「次へ」ボタンを含む 3 つの異なるレイアウトでフレームを描画するところまで来ましたが、最初のフレームのボタンをクリックすると代わりに空のフレームが表示されます。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;



public class MainFrame extends JFrame implements ActionListener{
    private BorderLayout layout;
    public MainFrame() {
        super("MyWizz");
        setSize(500, 500);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setLocationRelativeTo(null);
    }
    protected ImageIcon createImageIcon(String path,
                                               String description) {
        java.net.URL imgURL = getClass().getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL, description);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
    public void DrawFirstPage(){
        layout = new BorderLayout();
        setLayout(layout);       
        ImageIcon icon = createImageIcon("/images/icon.png","desc");
        add(new JLabel("text",icon,JLabel.CENTER),BorderLayout.CENTER);
        JButton bn = new JButton("next");
        add(bn,BorderLayout.PAGE_END);
        setVisible(true);
        bn.setActionCommand("goto2");
        bn.addActionListener(this);
        revalidate();
    }
    public void DrawBrowsePage(){
        System.out.println(getContentPane().getComponentCount());
        getContentPane().removeAll();

        System.out.println(getContentPane().getComponentCount());
        repaint();
        revalidate();
        layout = new BorderLayout();
        JButton bn = new JButton("next");
        add(new JLabel("text",JLabel.CENTER),BorderLayout.CENTER);
        add(bn,BorderLayout.PAGE_END);
        bn.setActionCommand("goto3");
        bn.addActionListener(this);
        setLayout(layout);
        setVisible(true);
        System.out.println(getContentPane().getComponentCount());
        repaint();
        revalidate();

    }


    public void DrawLoadingPage(){
        getContentPane().removeAll();
        repaint();
        revalidate();
        layout = new BorderLayout();
        setLayout(layout);
        setVisible(true);
        JButton bn = new JButton("next");
        add(new JLabel("text",JLabel.CENTER),BorderLayout.CENTER);
        add(bn,BorderLayout.PAGE_END);
        repaint();
        revalidate();
    }
    public void actionPerformed(ActionEvent e) {
        if("goto2".equals(e.getActionCommand())) DrawBrowsePage();
        if("goto3".equals(e.getActionCommand())) DrawLoadingPage();
    }
}

これらのいくつかの System.out.println 関数から、DrawBrowsePage() が実行され、古い要素が削除され、新しい要素が追加されていることがわかります。あなたが惜しまない助けをいただければ幸いです。

FAQ: いいえ、jwizz を使用できません。

4

1 に答える 1