试试调用revalidate(),repaint()等函数,
你所说的不起作用估计是因为没有通知程序布局已经改变

解决方案 »

  1.   

    有没有调用到代码呢?System.out.println试试。
    如果没有,写成public void actionPerformed(ActionEvent e){...}
      

  2.   

    好多错误提示;但看了不明白,调用到代码了,但revalidate()怎么用啊,继续请教。Exception occurred during event dispatching:java.lang.IllegalArgumentException: wrong parent for CardLayout at java.awt.CardLayout.checkLayout(CardLayout.java:326) at java.awt.CardLayout.show(CardLayout.java:443) at imageviewer.AnalysisImageFrame1.show3window_actionPerformed(AnalysisImageFrame1.java:417) at imageviewer.AnalysisImageFrame1$12.actionPerformed(AnalysisImageFrame1.java:184) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:268) at javax.swing.AbstractButton.doClick(AbstractButton.java:279) at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:886) at java.awt.Component.processMouseEvent(Component.java:3715) at java.awt.Component.processEvent(Component.java:3544) at java.awt.Container.processEvent(Container.java:1164) at java.awt.Component.dispatchEventImpl(Component.java:2593) at java.awt.Container.dispatchEventImpl(Container.java:1213) at java.awt.Component.dispatchEvent(Component.java:2497) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125) at java.awt.Container.dispatchEventImpl(Container.java:1200) at java.awt.Window.dispatchEventImpl(Window.java:914) at java.awt.Component.dispatchEvent(Component.java:2497) at java.awt.EventQueue.dispatchEvent(EventQueue.java:339) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
      

  3.   

    好多错误提示;但看了不明白,调用到代码了,但revalidate()怎么用啊,继续请教。Exception occurred during event dispatching:java.lang.IllegalArgumentException: wrong parent for CardLayout at java.awt.CardLayout.checkLayout(CardLayout.java:326) at java.awt.CardLayout.show(CardLayout.java:443) at imageviewer.AnalysisImageFrame1.show3window_actionPerformed(AnalysisImageFrame1.java:417) at imageviewer.AnalysisImageFrame1$12.actionPerformed(AnalysisImageFrame1.java:184) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1450) at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1504) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:268) at javax.swing.AbstractButton.doClick(AbstractButton.java:279) at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:886) at java.awt.Component.processMouseEvent(Component.java:3715) at java.awt.Component.processEvent(Component.java:3544) at java.awt.Container.processEvent(Container.java:1164) at java.awt.Component.dispatchEventImpl(Component.java:2593) at java.awt.Container.dispatchEventImpl(Container.java:1213) at java.awt.Component.dispatchEvent(Component.java:2497) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125) at java.awt.Container.dispatchEventImpl(Container.java:1200) at java.awt.Window.dispatchEventImpl(Window.java:914) at java.awt.Component.dispatchEvent(Component.java:2497) at java.awt.EventQueue.dispatchEvent(EventQueue.java:339) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
      

  4.   


         1.可以用菜单选项改变窗体布局
         2. 用repaint()应该不可以。
         3. 仅供参考:
              public void actionPerformed(ActionEvent evt){
        content=getContentPane();
        Object source=evt.getSource();
        if (source==bordermenu){
          content.setLayout(new BorderLayout());
          content.add(test1,BorderLayout.NORTH);
          content.add(test2,BorderLayout.CENTER);
          //改变布局
          pack();
          doLayout();
          }
        else if (source==gridmenu)
        {
          content.setLayout(null);
          content.setLayout(new GridLayout(1,2));
          content.add(test1);
          content.add(test2);
          pack();
          doLayout();
        }
      }good luky!!
      

  5.   

    这段程序原来FlowLayout ,想在CardLayout和FlowLayout中任意替换,但变CardLayout是好使,还原成FlowLayout就只显示一个图,别的图没了,怎么回事? if(show3window.getState()){
          jPanel1.setLayout(null);
          jPanel1.setLayout(cardLayout1);
          jPanel1.add(jPanel2,"jPanel2");
          jPanel1.add(jPanel3,"jPanel3");
          jPanel1.add(jPanel4,"jPanel4");
          pack();
          doLayout();
          cardLayout1.first(jPanel1);    }
        if(!show3window.getState()){
          jPanel1.setLayout(flowLayout2);
          jPanel1.add(jPanel2, "jPanel2");
          jPanel1.add(jPanel4, "jPanel4");
          jPanel1.add(jPanel3, "jPanel3");
          pack();
          doLayout();
       }