0

Netbeans 6.9.1 のデザイン ビューを使用して、いくつかのコントロールを含むフレームをデザインしました。さらに、ボタンのクリックでいくつかのスイング コンポーネントの表示を切り替えようとしている空のパネルを追加しました。問題は、ボタンをクリックしてもパネルに何も表示されないことです。コードは次のとおりです。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    JPanel txtPanel = new JPanel();
    JPanel listPanel = new JPanel();

    JTextField txtfield = new JTextField("ABCDEFGHIJ", 20);
    txtPanel.add(txtfield);

    JList<String> list = new JList<String>();
    DefaultListModel<String> model = new DefaultListModel<String>();

    for (int i = 0; i < userCommands.size(); i++){
        model.addElement(userCommands.get(i));
    }
    list.setModel(model);
    listPanel.add(list);

    jPanel2.add(listPanel, "list");
    jPanel2.add(txtPanel, "text");

    //MainUI.getFrames()[0].add(jPanel2, BorderLayout.CENTER);

    itemStateChanged("text");
}

コードitemStateChangedは次のとおりです。

    public void itemStateChanged(String disp) {
    CardLayout cl = (CardLayout)(jPanel2.getLayout());
    cl.show(jPanel2, disp);
}

コードの最初の部分では、jPanel2他のコンポーネントを含むフレームにドラッグ アンド ドロップします。ここで達成しようとしているのは、ボタンをクリックすると、jPanel2テキスト フィールドとリストを切り替える必要があるということです。しかし現在、パネルはボタンをクリックしても何も表示されません。

4

2 に答える 2

0

簡単なサンプル コードを作成しました。ご覧ください。カード レイアウトをグローバルとして定義し、試す必要があります。

import javax.swing.AbstractAction;

public class TestPanel extends JPanel {

/**
 * Create the panel.
 */
JPanel panel;
CardLayout cl = new CardLayout();
public TestPanel() {
    GridBagLayout gridBagLayout = new GridBagLayout();
    gridBagLayout.columnWidths = new int[]{0, 155, 0, 0};
    gridBagLayout.rowHeights = new int[]{94, 0, 0};
    gridBagLayout.columnWeights = new double[]{0.0, 0.0, 1.0, Double.MIN_VALUE};
    gridBagLayout.rowWeights = new double[]{1.0, 1.0, Double.MIN_VALUE};
    setLayout(gridBagLayout);

    JButton btnNewButton = new JButton("New button");
    GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
    gbc_btnNewButton.insets = new Insets(0, 0, 5, 5);
    gbc_btnNewButton.gridx = 0;
    gbc_btnNewButton.gridy = 0;
    add(btnNewButton, gbc_btnNewButton);
    btnNewButton.setAction(new AbstractAction("New button") {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            JPanel txtPanel = new JPanel();
            JPanel listPanel = new JPanel();

            JTextField txtfield = new JTextField("ABCDEFGHIJ", 20);
            txtPanel.add(txtfield);

            JList<String> list = new JList<String>();
            DefaultListModel<String> model = new DefaultListModel<String>();

            for (int i = 0; i < 3; i++){
                model.addElement("Sanjaya");
            }
            list.setModel(model);
            listPanel.add(list);

            panel.add(listPanel, "list");
            panel.add(txtPanel, "text");

            //MainUI.getFrames()[0].add(jPanel2, BorderLayout.CENTER);

            itemStateChanged("list");

        }
    });

    JTextArea textArea = new JTextArea();
    textArea.setLineWrap(true);
    GridBagConstraints gbc_textArea = new GridBagConstraints();
    gbc_textArea.insets = new Insets(0, 0, 5, 5);
    gbc_textArea.fill = GridBagConstraints.BOTH;
    gbc_textArea.gridx = 1;
    gbc_textArea.gridy = 0;
    add(textArea, gbc_textArea);

    panel = new JPanel(cl);
    GridBagConstraints gbc_panel = new GridBagConstraints();
    gbc_panel.insets = new Insets(0, 0, 5, 0);
    gbc_panel.fill = GridBagConstraints.BOTH;
    gbc_panel.gridx = 2;
    gbc_panel.gridy = 0;
    add(panel, gbc_panel);

}
  public void itemStateChanged(String disp) {


        cl.show(panel, disp);
    }

}

于 2013-04-30T12:46:07.740 に答える