关于CardLayout 卡片切换报错

xiluty 2014-11-14 06:19:58
文件1:wind.java

package com.zh.wintext;

import java.awt.CardLayout;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;



public class wind extends JFrame {

/**
*
*/
private static final long serialVersionUID = -1560598168096340738L;
private JPanel Pane = null;
private CardLayout card = null;
private panel2 panel2 = null;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
wind frame = new wind();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public wind() {
card = new CardLayout(5, 5);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 641, 458);
Pane = new JPanel(card);
panel2 = new panel2();
Pane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(Pane);
Pane.setLayout(new CardLayout(0, 0));


JPanel panel = new JPanel();

Pane.add(panel, "p");
Pane.add(panel2, "p");

JButton button = new JButton("显示下一个");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
card.show(Pane,"p2");
}
});


GroupLayout gl_panel = new GroupLayout(panel);
gl_panel.setHorizontalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(179)
.addComponent(button)
.addContainerGap(206, Short.MAX_VALUE))
);
gl_panel.setVerticalGroup(
gl_panel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_panel.createSequentialGroup()
.addGap(50)
.addComponent(button)
.addContainerGap(179, Short.MAX_VALUE))
);
panel.setLayout(gl_panel);
}

}

文件2:panel2.java

package com.zh.wintext;

import javax.swing.JPanel;

public class panel2 extends JPanel {

/**
*
*/
private static final long serialVersionUID = -645742299400668011L;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;

/**
* Create the panel.
*/
public panel2() {

JButton button = new JButton("4");

textField = new JTextField();
textField.setColumns(10);

textField_1 = new JTextField();
textField_1.setColumns(10);

textField_2 = new JTextField();
textField_2.setColumns(10);

JButton button_1 = new JButton("5");
GroupLayout groupLayout = new GroupLayout(this);
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup()
.addComponent(textField, GroupLayout.PREFERRED_SIZE, 337, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED, 17, Short.MAX_VALUE)
.addComponent(button)
.addGap(47))
.addGroup(groupLayout.createSequentialGroup()
.addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 405, GroupLayout.PREFERRED_SIZE)
.addContainerGap(35, Short.MAX_VALUE))
.addGroup(groupLayout.createSequentialGroup()
.addComponent(textField_2, GroupLayout.PREFERRED_SIZE, 270, GroupLayout.PREFERRED_SIZE)
.addGap(18)
.addComponent(button_1, GroupLayout.PREFERRED_SIZE, 126, GroupLayout.PREFERRED_SIZE)
.addContainerGap(26, Short.MAX_VALUE))))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(Alignment.LEADING)
.addGroup(groupLayout.createSequentialGroup()
.addContainerGap()
.addGroup(groupLayout.createParallelGroup(Alignment.BASELINE)
.addComponent(button)
.addComponent(textField, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addGroup(groupLayout.createParallelGroup(Alignment.LEADING)
.addComponent(textField_2, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)
.addComponent(button_1, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE))
.addContainerGap(27, Short.MAX_VALUE))
);
setLayout(groupLayout);

}
}


问题是卡片切换报错(eclipse),Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout。求解!
...全文
198 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2014-11-16
  • 打赏
  • 举报
回复
Pane.setLayout(new CardLayout(0, 0)); 这行多余的,前面有 Pane = new JPanel(card);
huntor 2014-11-16
  • 打赏
  • 举报
回复
添加组件时。两个的限定都是p,切换时又有p2了
草帽_路飞 2014-11-14
  • 打赏
  • 举报
回复
引用 楼主 xiluty 的回复:
文件1:wind.java package com.zh.wintext; import java.awt.CardLayout; import java.awt.EventQueue; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class wind extends JFrame { /** * */ private static final long serialVersionUID = -1560598168096340738L; private JPanel Pane = null; private CardLayout card = null; private panel2 panel2 = null; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { wind frame = new wind(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public wind() { card = new CardLayout(5, 5); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 641, 458); Pane = new JPanel(card); panel2 = new panel2(); Pane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(Pane); Pane.setLayout(new CardLayout(0, 0)); JPanel panel = new JPanel(); Pane.add(panel, "p"); Pane.add(panel2, "p"); JButton button = new JButton("显示下一个"); button.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { card.show(Pane,"p2"); } }); GroupLayout gl_panel = new GroupLayout(panel); gl_panel.setHorizontalGroup( gl_panel.createParallelGroup(Alignment.LEADING) .addGroup(gl_panel.createSequentialGroup() .addGap(179) .addComponent(button) .addContainerGap(206, Short.MAX_VALUE)) ); gl_panel.setVerticalGroup( gl_panel.createParallelGroup(Alignment.LEADING) .addGroup(gl_panel.createSequentialGroup() .addGap(50) .addComponent(button) .addContainerGap(179, Short.MAX_VALUE)) ); panel.setLayout(gl_panel); } } 文件2:panel2.java package com.zh.wintext; import javax.swing.JPanel; public class panel2 extends JPanel { /** * */ private static final long serialVersionUID = -645742299400668011L; private JTextField textField; private JTextField textField_1; private JTextField textField_2; /** * Create the panel. */ public panel2() { JButton button = new JButton("4"); textField = new JTextField(); textField.setColumns(10); textField_1 = new JTextField(); textField_1.setColumns(10); textField_2 = new JTextField(); textField_2.setColumns(10); JButton button_1 = new JButton("5"); GroupLayout groupLayout = new GroupLayout(this); groupLayout.setHorizontalGroup( groupLayout.createParallelGroup(Alignment.LEADING) .addGroup(groupLayout.createSequentialGroup() .addContainerGap() .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addGroup(Alignment.TRAILING, groupLayout.createSequentialGroup() .addComponent(textField, GroupLayout.PREFERRED_SIZE, 337, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED, 17, Short.MAX_VALUE) .addComponent(button) .addGap(47)) .addGroup(groupLayout.createSequentialGroup() .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 405, GroupLayout.PREFERRED_SIZE) .addContainerGap(35, Short.MAX_VALUE)) .addGroup(groupLayout.createSequentialGroup() .addComponent(textField_2, GroupLayout.PREFERRED_SIZE, 270, GroupLayout.PREFERRED_SIZE) .addGap(18) .addComponent(button_1, GroupLayout.PREFERRED_SIZE, 126, GroupLayout.PREFERRED_SIZE) .addContainerGap(26, Short.MAX_VALUE)))) ); groupLayout.setVerticalGroup( groupLayout.createParallelGroup(Alignment.LEADING) .addGroup(groupLayout.createSequentialGroup() .addContainerGap() .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE) .addComponent(button) .addComponent(textField, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(textField_1, GroupLayout.PREFERRED_SIZE, 180, GroupLayout.PREFERRED_SIZE) .addPreferredGap(ComponentPlacement.RELATED) .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addComponent(textField_2, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE) .addComponent(button_1, GroupLayout.PREFERRED_SIZE, 48, GroupLayout.PREFERRED_SIZE)) .addContainerGap(27, Short.MAX_VALUE)) ); setLayout(groupLayout); } } 问题是卡片切换报错(eclipse),Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout。求解!
很明显,线程问题,检查下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧