只汝 2021-05-04 11:23 采纳率: 60%
浏览 182
已采纳

wrong parent for CardLayout (含代码段)怎么解决?

package BankUserUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ClientUI123 {
    public void CreateClientUI() {
        //create a main frame
        JFrame f = new JFrame("Welcome to the bank.");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setResizable(false);
        f.setSize(500,300);
        f.setLocationRelativeTo(null);

        JPanel mainPanel = new JPanel();
        CardLayout cards = new CardLayout();
        mainPanel.setLayout(cards);
        f.add(mainPanel);

        //interface 1
        //login interface
        JPanel login = new JPanel(null);
        mainPanel.add(login, "login");
        cards.addLayoutComponent(login, "login");

        JLabel name = new JLabel("name:");
        JTextField nameType = new JTextField(15);
        JButton loginButton = new JButton("LOGIN");
        JButton enrollButton = new JButton("ENROLL");
        JButton quit = new JButton("QUIT");

        login.add(name);
        login.add(nameType);
        login.add(loginButton);
        login.add(enrollButton);
        login.add(quit);
        name.setBounds(90, 100, 100, 20);
        nameType.setBounds(130, 100, 100, 20);

        login.add(loginButton);
        login.add(enrollButton);
        login.add(quit);
        loginButton.setBounds(300, 60, 100, 20);
        enrollButton.setBounds(300, 120, 100, 20);
        quit.setBounds(300,180, 100, 20);

        //interface 2
        //service check interface
        JPanel services = new JPanel(null);
        mainPanel.add(services, "services");
        cards.addLayoutComponent(services, "services");

        JButton delete = new JButton("Delete a specified account.");
        JButton display = new JButton("Display all my accounts.");
        JButton modify = new JButton("Modify a specific account.");

        services.add(delete);
        services.add(display);
        services.add(modify);
        delete.setBounds(100, 60, 300, 30);
        display.setBounds(100, 120, 300, 30);
        modify.setBounds(100, 180, 300, 30);

        class Actions implements ActionListener {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getActionCommand().equals("LOGIN")) {
                    //cards.next(services);
                    cards.show(services, "services");
                }
            }
        }

        Actions actions = new Actions();

        loginButton.addActionListener(actions);
        enrollButton.addActionListener(actions);
        quit.addActionListener(actions);

        delete.addActionListener(actions);
        display.addActionListener(actions);
        modify.addActionListener(actions);

        f.setVisible(true);
    }

    public static void main(String[] args) {
        //create a UI
        new ClientUI123().CreateClientUI();
    }
}

运行界面

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout
	at java.desktop/java.awt.CardLayout.checkLayout(CardLayout.java:404)
	at java.desktop/java.awt.CardLayout.next(CardLayout.java:441)
	at BankUserUI.ClientUI123$1Actions.actionPerformed(ClientUI123.java:70)<4 internal calls>
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)<30 internal calls>

运行界面的详细信息(如果有用的话)

D:\Java\bin\java.exe "-javaagent:D:\IDEA\IntelliJ IDEA Educational Edition 2020.3.4\lib\idea_rt.jar=6024:D:\IDEA\IntelliJ IDEA Educational Edition 2020.3.4\bin" -Dfile.encoding=UTF-8 -classpath D:\javacode\BankUserUI\out\production\BankUserUI BankUserUI.ClientUI123
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout
	at java.desktop/java.awt.CardLayout.checkLayout(CardLayout.java:404)
	at java.desktop/java.awt.CardLayout.next(CardLayout.java:441)
	at BankUserUI.ClientUI123$1Actions.actionPerformed(ClientUI123.java:70)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6379)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Process finished with exit code 0
  • 写回答

3条回答 默认 最新

  • CSDN专家-Time 2021-05-04 11:24
    关注
      cards.show(services, "services");

    这句话有问题

    主要是你想解决什么问题。新建一个窗口吗

    还是做什么处理,你的源代码可能有问题。

    讲代码改成

      cards.show(mainPanel, "services");

    就不会报错

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法