老大,你至少也要把出错信息帖出来嘛。
你应该在类的声明中加上implement ActionListener
然后
btn.addActionListener(this);

解决方案 »

  1.   

    你看我贴出来的代码??!!!我怎么 reprint()  都不可以啊?????所有控件的 reprint()  我都试过了!!!请高手指点????最好能把上面代码 描述 的功能实现!!!!
    谢谢!!!
      

  2.   

    我有一个建议。
    public void actionPerformed(ActionEvent e)
    {
         tt = new JLabel("成功了,就是这样的");                               
         p.removeAll();
         p.add(tt);
         p.add(btn);
         ConctrlTest.this.setVisible(true);
         ConctrlTest.this.repaint();
    }
      

  3.   

    楼主的代码连新控件的add代码也没有,怎么可能成功
      

  4.   

    首先谢谢 yangFrame(yangFrame) 的建议,但这只是我写的一个演示问题的代码!我真正开发的程序要比这个程序复杂得多了,你的方法,在这里是可以的,但放到一个复杂的界面中,这几乎就是不可能实现的。我的写的程序界面的各个部分都是通过各自不同的模块来完成的,要完全的重新去布局一个已经显示了的界面也是不可能实现的。不过仍很谢谢你!!!huanjing51(幻境) ,在 java 中,都是以“引用”来表示对象的,我改变了一个引用指向的对象,其实也就是改变了(例子中 tt 这个对象)。因此我觉得不需要在 用一下 add 了。按照我的设想,当我改变了 tt 指向的对象后,当 repaint(),时,应该时调用新对象的 绘制 函数了,但这个没有变成现实,我怀疑的可能是 Frame 类自己去缓冲了他自己的组件对象,不知道我的推测对不对?????请高手指点指点!!!!!!!!谢谢!!!!!!!!
      

  5.   

    同意你说的,我也是发现repaint()不行,也不知道怎么回事。
    才想用remove(),然后add().你的目的只是把JTextField变成JLable么?
    如果只是这样的话用JTextField.enable(FAlSE)也差不多。
      

  6.   

    我是在开发一个自定义的组件这个组件 有不同的显示模式,为了以后扩展这个显示模式的方便
    我给这个组件做了公共的基类,然后在为各个显示模式都做了一个扩展类。我在我的应用中,在一个地方显示了这样的一个组件当我要更改这个组件的显示模式时,就是使用的我演示的方法(换用不同的子类实现来完成)可能我这个方法本身就有问题吧当然如果把所有的代码都写在一个类里,运行时根据不同的情况,用 if 语句来执行不同的代码是可以的,但这样,类的大小会至少超过 3000 行,而且以后扩展更多的显示模式也非常的复杂。这在软件设计中是不可取的。学习 设计模式 都半年多了,一直理解得不是很好,yangFrame(yangFrame) 你对这个问题有什么好的解决方法。谢谢!!有时间一起讨论一下我的 QQ 4109266