Java运行出现问题,怎么办?那里出错?

JasonCPJ 2016-01-14 11:20:12
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding container's parent to itself
at java.awt.Container.checkAddToSelf(Unknown Source)
at java.awt.Container.addImpl(Unknown Source)
at java.awt.Container.add(Unknown Source)
at 读心术.SetWindow$PanelAction.actionPerformed(SetWindow.java:122)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
...全文
332 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
聪头 2016-01-15
  • 打赏
  • 举报
回复
检查一下哪里调用actionPerformed(ActionEvent e) 了。
JasonCPJ 2016-01-15
  • 打赏
  • 举报
回复
package 读心术; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.Border; import javax.swing.border.LineBorder; public class SetWindow extends JFrame{ public JPanel p1; public JPanel panel; private String path; public static ArrayList filelist = new ArrayList(); public PanelAction listener = new PanelAction(); // 内部类,实现事件响应 private JButton button = new JButton("上 一 步"); private JButton Ybutton = new JButton("是"); private JButton Nbutton = new JButton("否"); private JButton Nextbutton = new JButton("下 一 步"); public SetWindow(){ setTitle("读心术——扑克牌"); setSize(700,700); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(P1(),BorderLayout.CENTER);//图片展示面板 add(P2(),BorderLayout.NORTH); //3个按钮+提示框 button.addActionListener(listener); Ybutton.addActionListener(listener); Nbutton.addActionListener(listener); Nextbutton.addActionListener(listener); } public JPanel P2(){ //面板P2放 set1——set6+3个按钮 **************************** JPanel p2 = new JPanel(new GridLayout(1,2,5,1)); Color colorRed = new Color(255,175,178);//红 button.setBackground(new Color(148,216,229));//蓝 button.setForeground(new Color(122,206,22));//绿 Border lineBorder = new LineBorder(colorRed,2); button.setBorder(lineBorder); //把button,button1,button2放到p3 JPanel p3 = new JPanel(new GridLayout(1,2,5,1)); p3.add(Nbutton,BorderLayout.EAST); p3.add(Ybutton,BorderLayout.WEST); p3.add(button,BorderLayout.CENTER); //提示语 JLabel label = new JLabel(" 你选择的那张扑克牌是否在下面 ?"); //label.setForeground(new Color(122,206,22));//提示语颜色 Border labelBorder = new LineBorder(Color.BLACK,1); label.setBorder(labelBorder); //把提示语和按钮添加到面板 p2.add(label/*,BorderLayout.WEST*/); p2.add(p3/*,BorderLayout.EAST*/); //面板P22放 首页(按钮“下一步”+提示语)************************ JPanel p22 = new JPanel(new GridLayout(1,2,5,1)); Nextbutton.setBackground(new Color(148,216,229));//蓝 Nextbutton.setForeground(new Color(122,206,22));//绿 Border lineBorder22 = new LineBorder(colorRed,2); Nextbutton.setBorder(lineBorder); p22.add(new JLabel("选择一张扑克牌并记住它"),BorderLayout.WEST); p22.add(Nextbutton,BorderLayout.EAST); if (panel == null) { panel = new JPanel(); panel.add(p22,BorderLayout.EAST); } else { panel.add(p2, BorderLayout.CENTER); } return panel; } public JPanel P1(){ if (p1 == null) { p1 = new JPanel(); p1.setLayout(new GridLayout(6,9,1,1)); refreshFileList("E:\\Java\\image\\card"); for(int i = 0; i < filelist.size();i++){ path = (String)filelist.get(i); ImageIcon card = new ImageIcon(path); p1.add(new JLabel(card)); } //panel.add(new Label("这是默认的面板"), BorderLayout.CENTER); p1.setBorder(BorderFactory.createTitledBorder("All card")); } return p1; } private class PanelAction implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == Nextbutton){ SetWindow cp = SetWindow.this; cp.p1.removeAll(); cp.p1.add(P1()); System.out.println("next"); cp.p1.validate(); } else if(e.getSource() == button){ SetWindow cp = SetWindow.this; cp.p1.removeAll(); cp.p1.add(P1()); System.out.println("下一步"); cp.p1.validate(); } else if(e.getSource() == Ybutton){ SetWindow cp = SetWindow.this; cp.p1.removeAll(); cp.p1.add(P1()); System.out.println("是"); cp.p1.validate(); } else if(e.getSource() == Nbutton){ SetWindow cp = SetWindow.this; cp.p1.removeAll(); cp.p1.add(P1()); System.out.println("否"); cp.p1.validate(); } } } /**refreshFileList读取图片地址存到数组filelist里面*/ public static void refreshFileList(String strPath) { File dir = new File(strPath); File[] files = dir.listFiles(); //java.io.File.listFiles() //返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。 if (files == null) { return; } for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { //java.io.File.isDirectory()检查表示此抽象路径名的文件是否是一个目录 refreshFileList(files[i].getAbsolutePath()); } else { // String strFileName = files[i].getAbsolutePath()/*.toLowerCase()*/; // System.out.println("---"+strFileName); filelist.add(files[i].getAbsolutePath()); /* */ } } //System.out.println("----------------------------"); } public static void main(String[] args) { // TODO Auto-generated method stub SetWindow a = new SetWindow(); a.setVisible(true); } }
hqq1007 2016-01-15
  • 打赏
  • 举报
回复
java.lang.IllegalArgumentException: adding container's parent to itself at 读心术.SetWindow$PanelAction.actionPerformed(SetWindow.java:122) 这一行代码是什么,代码也贴出来吧

58,452

社区成员

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

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