0

CardLayout を使用して簡単なプログラムを作成しています。メイン画面には、別の画面の別のボタンを含む次の画面に移動するボタンを表示する必要があります。私の問題は、プログラムを実行すると画面が真っ暗になることです。オンラインのチュートリアルに従って独自のプログラムを作成しようとしましたが、コードの問題が見つからないようです。実行時にエラーは発生しません。これが私のコードです

//using CardLayout to change screen when action is performed
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.Popup;
import javax.swing.JOptionPane;

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

public class CL extends JFrame {

    JPanel cardPanel;
    JPanel cardPanelA;
    JPanel cardPanelB;//to set different screens
    CardLayout cl;
    private JButton button1;
    private JButton button2;
    private JButton change;
    private JLabel label;
    private JTextField textField1;
    private JTextField textField2;
    JButton button;

    public CL() {
        super("This is a sample");

        cardPanel = new JPanel();
        cardPanelA = new JPanel();
        cardPanelB = new JPanel();

        cl = new CardLayout();
        cardPanel.setLayout(cl);

        button1 = new JButton("button1");
        button2 = new JButton("button2");
        change = new JButton("change screen");
        label = new JLabel("this is a label");
        textField1 = new JTextField(10);
        textField2 = new JTextField("enter text", 6);

        cardPanelA.add(change);
        cardPanelA.add(label);
        cardPanelA.add(textField1);
        cardPanelA.add(textField2);
        cardPanelB.add(button1);
        cardPanelB.add(button2);

        cardPanel.add(cardPanelA);
        cardPanel.add(cardPanelB);

        JPanel panel1 = new JPanel();
        button = new JButton("initial button");
        panel1.add(button);

        theHandler handler = new theHandler();//make action listener
        change.addActionListener(handler);
        button1.addActionListener(handler);
        button2.addActionListener(handler);
        button.addActionListener(handler);
        /*
        getContentPane().add(panel1, BorderLayout.NORTH);
        getContentPane().add(cardPanelA, BorderLayout.NORTH);
        getContentPane().add(cardPanelB, BorderLayout.NORTH);
        */
    }

    private class theHandler implements ActionListener {
        public void actionPerformed(ActionEvent event) {

            if (event.getSource() == button) {
                cl.show(cardPanel, "Panel A");
            }
            if (event.getSource() == change) {
                cl.show(cardPanelB, "panelB");
            }
            if (event.getSource() == button2) {
                cl.show(cardPanel, "PanelA");
            }
            if (event.getSource() == button1) {
                JOptionPane.showMessageDialog(null, "this is the second screen");
            }

        }
    }

}

/* CardLayout の使用方法: CardLayout マネージャーを作成し、それぞれが異なる画面になるさまざまな JPanel を作成します。CardLayout をレイアウトとして格納するパネルを作成します。* 各パネル (ボタン、テキストフィールド) にさまざまな要素を追加し、* CardLayout を格納する JPanel にパネルを追加します */

import javax.swing.JFrame;

public class CardTest {
    public static void main(String[] args) {

        CL object = new CL();
        object.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        object.setSize(400, 400);
        object.setVisible(true);

    }
}

単純なことかもしれませんが、それが何であるかはわかりません。アドバイスをいただければ幸いです。

4

1 に答える 1

0

パネルをフレームに追加してください

    add(cardPanel);

それがなければコンポーネントは表示されません

于 2013-08-08T06:12:40.660 に答える