在JScrollPane中放入任何组件、label/textArea/JPanel等,无论这些组件设置的多大,即便超出了JScrollPane的大小,JScrollPane也不出现滚动条上的滑块,也就是说无法上下左右滚动。我本意是在JScrollPane中放一个JPanel,然后在JPanel上绘制一些图像,然后用滚动条可以上下左右翻动,但是无法是实现,求教!

解决方案 »

  1.   

    给你一个滚动条例子看看package com.library.function;import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JProgressBar;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;import com.library.conn.NetConn;class Borlistbookfrm extends JFrame implements ActionListener
    {
    Object a[][]; 
    Object colname[]={"Óû§","ÊéÃû","½èÊéʱ¼ä","»¹Êéʱ¼ä","±¸×¢","ÊÇ·ñ¹é»¹"};
    JLabel l_name,l_bookname;
    JTextField t_name,t_bookname;
    JTable table;
    Container container;
    JButton b_enter,b_back;
    JProgressBar p_bar;
    JPanel pan1,pan2,pan3;
    String a1,a2;

    NetConn sql;
    Statement sqll;
    ResultSet rs;

    Borlistbookfrm()
    {
    //½çÃæ²¼¾Ö
    super("½èÊéÁбí");
    l_name=new JLabel("Ãû³Æ£º");
    l_bookname=new JLabel("×÷Õߣº");
    t_name=new JTextField("",10);
    t_bookname=new JTextField("",10);
    a=new Object[30][6];
    table=new JTable(a,colname);
    setSize(300,300);setVisible(true);
    b_enter=new JButton("È·¶¨");
    b_back=new JButton("·µ»Ø");
    b_enter.addActionListener(this);
    b_back.addActionListener(this);
    pan1=new JPanel();pan2=new JPanel();pan3=new JPanel();
    pan1.add(l_name);pan1.add(t_name);
    pan1.add(l_bookname);pan1.add(t_bookname);pan1.add(b_enter);pan1.add(b_back);

    p_bar=new JProgressBar(JProgressBar.VERTICAL,0,50);
    p_bar.setStringPainted(true);
    container=getContentPane();
    container.add(pan1,BorderLayout.SOUTH);
    container.add(new JScrollPane(table),BorderLayout.CENTER);
    container.add(p_bar,BorderLayout.WEST);
    //½¨Á¢Êý¾Ý¿âÁ¬½Ó
    sql=new NetConn();
    setBounds(230,150,650,350);
    }
    public void  actionPerformed(ActionEvent eb)
    {
    //µ¥»÷·µ»Ø°´Å¥µÄʼþ´¦Àí³ÌÐò
    if(eb.getSource()==b_back)
    {
    dispose();
    }
    //µ¥»÷È·¶¨°´Å¥µÄʼþ´¦Àí³ÌÐò
    if(eb.getSource()==b_enter)
    {
    try
    {
    int i=0;
    sqll=sql.connect();
    //»ñÈ¡½èÔÄÕßµÄÃû³ÆºÍ½èÔÄͼÊéµÄÃû×Ö
    a1="'"+"%"+t_name.getText().trim()+"%"+"'";
    a2="'"+"%"+t_bookname.getText().trim()+"%"+"'";
    //¸ù¾Ý½èÔÄÕßÃû³ÆºÍ½èÔÄͼÊéµÄÃû×Ö½øÐвéѯ
    String temp="select * from bookbrowse"+" where studentname like "+a1+" and bookname like "+a2;
    rs=sqll.executeQuery(temp);
    //½«½á¹û¼¯ÖеļǼÏÔʾ
    while(rs.next())
    {
    a[i][0]=rs.getString(2);a[i][1]=rs.getString(3);a[i][2]=rs.getString(4);a[i][3]=rs.getDate(5);
    a[i][4]=rs.getString(6);a[i][5]=rs.getString(7);
    i++;
    p_bar.setValue(i);;p_bar.setString("²éѯÁË"+i+"Ìõ¼Ç¼");
    }
    }
    catch(SQLException ed)
    {
    System.out.print(ed);

    }
    }
    }
    }希望对你有帮助
      

  2.   

    楼上的import com.library.conn.NetConn;是什么东西?复制代码后无法识别。
    期待你的回复。
      

  3.   

    import com.library.conn.NetConn;
    是连接数据库
    package com.library.conn;import java.sql.*;
    //Êý¾Ý¿âÁª½ÓÀà
    public class NetConn 
    {
    Connection con;
    Statement sql;
    public Statement connect()
    {


    try
        {
          //ÔØÈëÇý¶¯³ÌÐò×Ö·û´®
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        }
       catch(ClassNotFoundException e1)
        {
        }
       try
           {
          //ͨ¹ýJDBC URLµÃµ½Connetction¶ÔÏó
      con=DriverManager.getConnection("jdbc:odbc:library");
      //ͨ¹ýConnection¶ÔÏó´´½¨Statement¶ÔÏó
              sql=con.createStatement();
              }
           catch(SQLException e2)
            {}
           return sql;
    }
    }
      

  4.   

    先谢谢二楼的兄弟,不过回答是答非所问,给出了个带滚动条的Table组件,没有解决我问的问题,我是想弄个比较大的可以滚动的面板,在面板上画图、放置其他组件。类似qq升级游戏选择座位的那个界面,很多桌位,用滚动条上下翻动
      

  5.   

    经过试验,发现一个解决办法,
    用Borladn中附带的XYLayout可以,该布局管理器可以指定组件在父组件中的绝对位置坐标,比如希望JScrollPanel中的panel长800,宽800,
    可以用XYLayout这种布局管理器在panel中800,800的位置放一个组件,这样外面的滚动条就出现了
      

  6.   

    你的这个JPanel需要设置一下大小
    jPanel.setPreferredSize(new Dimension(800,800));