你的代码有问题,就是这段
public void actionPerformed(ActionEvent event)
 {
  Container contentPane = getContentPane();
 buttonPanel = new JPanel();
 JButton insertButton = new JButton("insert");
 buttonPanel.add(insertButton);
 contentPane.add(buttonPanel,BorderLayout.NORTH);
  //此处添上 buttonPanel.revalidate();
 }
很明显,你的insertButton是在点击了“jdbcodbc的配置”按钮以后才会出现,如果不刷新页面,是肯定不会出现的。所以可以在里面添上一句就行,如上注释部分。
另外,你这个有点问题,就是最大化后,如果继续点击“jdbcodbc的配置”的话,就会又出现一个insertButton,这是因为你的按钮设置问题。其实你没点击一次,就生成了一个新的按钮,没有最大化的时候看不出来,因为每次刷新的时候都将它覆盖了,最大化后,由于位置等原因没有覆盖完全,所以就显示出两个按钮了
好好修正一下吧

解决方案 »

  1.   

    这样做一下替换:
       frame.show();
    替换为:
                frame.pack();
       frame.show();
      

  2.   

    我是一个初学SWING的,如果我想去掉这个错误,怎么帮呢?
    另外我如果还有一个菜单按扭,怎么覆盖上面这个呢?
    请老兄指点,100会送上。
      

  3.   

    问题1:我前面不是说了,在contentPane.add(buttonPanel,BorderLayout.NORTH);后面添上buttonPanel.revalidate();就行么?
    问题2:如需要果这样的话,你可以将界面定死,不让最大化(免去位置等原因)。在setTitle("项目");后面添上代码:this.setResizable(false);另外你可以将每个菜单对应的代码都模仿成前面我给你的修正后的代码就行。这样每次点击菜单,对应界面都会按需要刷新且覆盖原有界面。
    另外,如果不想取消最大化,也行,那么就需要你设计好界面了。
      

  4.   

    谢谢老兄,第一个问题我解决了,但有一个问题你可能误解了
    我的问题是如果我点另一个菜单选项,怎样驱除这个insert,重新开始一个PANEL
    是这样吗?
    Action jdbc_action = new AbstractAction("jdbc的配置")
     {
    public void actionPerformed(ActionEvent event)
     {
       Container contentPane = getContentPane();
       buttonPanel1 = new JPanel();
       JButton insertButton1 = new JButton("delete");
       buttonPanel1.add(insertButton1);
       contentPane.add(buttonPanel1,BorderLayout.NORTH);
       buttonPanel1.revalidate();
     }
     };
     JMenuItem jdbcItem = SysMenu.add(jdbc_action);
    但好象第二个不能用,仍表现为第一个