想在一个panel里动态的添加textarea,button..添加多了在panel中显示不到的时候自动的添加上滚动条?

解决方案 »

  1.   

    JScrollPane j = new JScrollPane(new JTextArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    this.add(j, null);
      

  2.   

    我试用了JScrollpane但是在放上去的东西不好定位的。在说我加进去的东西是动态的
    用,不好调整的。加jscrollpane,如果控制不在水平的添加呢
      

  3.   

    我用了jscrollpane。我是想动态的一行行的添加。每行有TextField Button。不要水平的scrollbar。在里面怎么布局啊
      

  4.   

    package test;import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;public class ccc {    public static void main(String[] args) {        JFrame frm = new JFrame();
            frm.getContentPane().setLayout(new BorderLayout());        JPanel p = new JPanel();
            p.setLayout(new GridLayout(100, 0));
            JButton btn[] = new JButton[100];
            for (int k = 0; k < 10; k++) {
                btn[k] = new JButton(Integer.toString(k));
                p.add(btn[k]);        }
            JScrollPane sp = new JScrollPane(p);
            frm.getContentPane().add(sp, BorderLayout.CENTER);
            frm.setSize(400, 400);
            frm.show();
        }}
      

  5.   

    你这样做我也考虑过 但是我是在frame上button点击 就在jpanel里添加一行。
    所以在里面的gridlayout的行数是动态的。这样动态的添加。有什么好方法实现吗?
      

  6.   

    package test;import java.awt.BorderLayout;
    import java.awt.Button;
    import java.awt.GridLayout;import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;public class ccccc extends JFrame { Button btn1;
    private JPanel jContentPane = null;
    JPanel p;
    public static int count = 1;
    JScrollPane sp; /**
     * This is the default constructor
     */
    public ccccc() {
    super();
    initialize();
    } /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
    this.setVisible(true);
    } /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
    if (jContentPane == null) {
    jContentPane = new JPanel();
    jContentPane.setLayout(new BorderLayout());
    btn1 = new Button("add");
    btn1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent e) {
    add();
    }
    });
    jContentPane.add(btn1, BorderLayout.NORTH);

    p = new JPanel();
            p.setLayout(new GridLayout(count, 0));
            JPanel btn = new JPanel();
            int k=1;
                //btn[k] = new JPanel();
                btn.setBackground(new java.awt.Color(20*k,20*k,20*k));
                //btn[k].setSize(100,1000);
                btn.add(new JLabel(new Integer(k).toString()));
                p.add(btn);         
            sp = new JScrollPane(p);
            jContentPane.add(sp, BorderLayout.CENTER); }
    return jContentPane;
    }
    private void add()
    {
    JPanel btn = new JPanel();
    count++;
    p.setLayout(new GridLayout(count, 0));
    btn = new JPanel();
    if(20*count>255)
    btn.setBackground(new java.awt.Color(200,200,200));
    else
    btn.setBackground(new java.awt.Color(20*count,20*count,20*count));
            //btn[k].setSize(100,1000);
            btn.add(new JLabel(new Integer(count).toString()));
            p.add(btn);
           // System.out.println(p.getComponentCount());
           // sp.repaint();
            this.repaint();
    } public static void main(String[] d)
    {
    new ccccc();
    }
    }
    这个现在还有点问题,不过可以实现你的功能。有个思路吧
      

  7.   

    上面的CODE的问题好象不是很好解决的样子,你有办法吗?你需要放大或是缩小一下才调用了paint(),我写了半天也没搞定
      

  8.   

    基本知道了。谢谢。
    请问哈java里有象dp中的 listview吗?如有是什么,怎么使用;如果没怎么实现?
      

  9.   

    为何要用repaint呢 ?为何不用validate()
      

  10.   

    我没做过DP,不知道listview是什么:)
      

  11.   

    listview是不是有点想把好多panel加到一起的感觉?
      

  12.   

    那java里有没有什么控件象list 但是添加进每一行的都是一个checkbox和textfield
      

  13.   

    你可以自己定义一个你要的控件类的。
    java里有list,不过好象只能写文本。
      

  14.   

    我查了一下,jList可以上面可以加图片,但还是不知道可不可以加你说的东西,而且还不是很简单,我觉得最好的办法就是自己写一个自己想要组合的控件,这样最好了