本帖最后由 lshine 于 2010-04-29 11:14:21 编辑

解决方案 »

  1.   


    JScrollPane jsc = new JScrollPane(textArea); 不太清楚,但你可以这样做
    jsc = new JScrollPane(textArea);
    这样还是属性里的啊.前面不要类型了
      

  2.   


    你没明白我意思。JScrollPane 变量放在类变量中声明实例化好后 加入到jframe中 无法使用
    但是在局部变量里声明缺可以使用
      

  3.   

    恩,明白你说的.不太懂Swing,如果你为了要将这个对象放在那个属性里,就可以参考一下我说的那个
      

  4.   

    谁说局部方法里不行的,你所谓的局部方法应该是main入口函数或是静态方法吧,
    这是因为main方法也是静态的,静态的方法怎么去访问非静态的成员变量呢?
    你都学到Swing了,怎么这些基本概念还不理解!
    还有一种办法就是把成员变量jsc也设置成静态的。
      

  5.   

    我又试了一下.....jp.add(textArea);
    要是把这句注释掉的话就是没有问题的.估计是两个地方都引用这个textArea了?
      

  6.   

    在swing中,组件是不能重复使用的,要使用必须创建新的对象和引用
      

  7.   

    理解清楚问题再回复!!  
    我在类中  JScrollPane jsc = new JScrollPane(textArea); 实例化后
    在方法中 使用加入主件的方式添加到容器中. button,textarea 等都没问题,唯独JScrollPane  不行.
    仅仅只能采用jp.add(new JScrollPane(XXX)) 这种形式!!
      

  8.   


    我没有重复引用!public class JSC extends JFrame {
    private JTextArea textArea = new JTextArea(5,25);
    private JTextField textField = new JTextField(10);
    private JButton button = new JButton("add");
        JScrollPane jsc = new JScrollPane(textArea);
        private JLabel lable = new JLabel();

    public static void main(String[] args) {
    new JSC().showApp(); }

    void showApp(){
    button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    textArea.append(textField.getText() + "\n");
    }
    });
    JFrame jFrame = new JFrame();
    JPanel jp = new JPanel();
    jp.add(textArea);
    jp.add(textField);
    jp.add(button);
    textArea.setLineWrap(true);
    jp.add(lable);
    jp.add(new JScrollPane(textArea)); //这里正常
    //jp.add(jsc); //问题
    jFrame.setSize(500, 500);
    jFrame.add(jp);
    jFrame.setVisible(true);
    jFrame.addWindowListener(new WinListener());
    }
    }
      

  9.   

    jp.add(textArea);
    我不是说了把这句去了就可以了吗?已经重复引用了,你在jsc里引用了,又在JPanel里引用了