我的问题是:Dialog上放一个是空的JTable是五行三列(界面上定好的),我查询数据库向该Table中赋值我已经加上滚动条了,但是就是不出来.不知道原因,代码如下请各位高手指教.
public class JTable2 extends JPanel{
  private static JTable2 table2 = null;
  //声明表格
  JTable table = new JTable();
  //声明表格的数据类
  DefaultTableModel model;
  int i;
  //表格的数据
  Object[][] data = new Object[][] {
      new Object[] {"","","","","",""},
      new Object[] {"","","","","",""},
      new Object[] {"","","","","",""},
      new Object[] {"","","","","",""},
      new Object[] {"","","","","",""},
  };  //表格的标题
  String[] columnNames = {
     "明细号","摘要","金额"
  };
  String columnEight = new String();
  String columnNine = new String();
  String columnTen = new String();
  JScrollPane jScrollPane1 = new JScrollPane();
  BorderLayout borderLayout1 = new BorderLayout();
  public JTable2() {
    try {
      jbInit();
      table2 = this;
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  void creatMxh() throws Exception{
    Dimension s = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    this.setBackground(SystemColor.controlHighlight);
    this.setFont(new java.awt.Font("Dialog", 0, 11));
    this.setDebugGraphicsOptions(0);
    this.setPreferredSize(new Dimension(200, 128));
    this.setToolTipText("");
    model =new DefaultTableModel(data, columnNames) {
      public boolean isCellEditable(int row, int column) {
        return false;
      } //指让单元不可编辑
    };
    table.setModel(model);
    //指定标题的重新排序不被允许
    table.getTableHeader().setReorderingAllowed(false);
    //不会因为在列标题之间拖动而改变大小
//    table.getTableHeader().setResizingAllowed(false);
    this.setLayout(borderLayout1);
    //使选择框成为一个单元格
    table.getTableHeader().setFont(new java.awt.Font("Dialog", 0, 12));
    table.getColumnModel().getColumn(1).setPreferredWidth( 60 );
    table.getColumnModel().getColumn(2).setPreferredWidth( 50 );
    table.setFont(new java.awt.Font("Dialog", 0, 12));
    table.setDebugGraphicsOptions(0);
    table.setMaximumSize(new Dimension(2147483647, 100));
    table.setColumnSelectionAllowed(false);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    table.setRowHeight(20);
    //取得表格的行方法
    ListSelectionModel rowSM = table.getSelectionModel();
    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    jScrollPane1.getViewport().setBackground(Color.white);
    jScrollPane1.setFont(new java.awt.Font("Dialog", 0, 12));
    jScrollPane1.setDebugGraphicsOptions(0);
    jScrollPane1.setSize(s);
    this.add(jScrollPane1, BorderLayout.CENTER);
//    table.setToolTipText("鼠标双击察看详细信息");
    jScrollPane1.getViewport().add(table);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  }
  void jbInit() throws Exception {
    Dimension s = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    this.setBackground(SystemColor.controlHighlight);
    this.setFont(new java.awt.Font("Dialog", 0, 11));
    this.setDebugGraphicsOptions(0);
    this.setPreferredSize(new Dimension(200, 128));
    this.setToolTipText("");
    if (i>0){
      //这里是给出数据和运算
      data[i-1][1] = columnEight;
      data[i-1][2] = columnNine;
      String zje0 = MenZhenHuaJiaShouFei.createInstance().jTextField2.getText();
      double zje1 = Double.parseDouble(columnNine);
      double zje2 = zje1+Double.parseDouble(zje0);
      BigDecimal b = new BigDecimal(Double.toString(zje2));
      BigDecimal one = new BigDecimal("1");
      double qq = b.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();
      MenZhenHuaJiaShouFei.createInstance().jTextField2.setText(String.valueOf(qq));
    }
    i++;
    model =new DefaultTableModel(data, columnNames) {
      public boolean isCellEditable(int row, int column) {
        return false;
      } //指让单元不可编辑
    };
    table.setModel(model);
    //指定标题的重新排序不被允许
    table.getTableHeader().setReorderingAllowed(false);
    //不会因为在列标题之间拖动而改变大小
//    table.getTableHeader().setResizingAllowed(false);
    this.setLayout(borderLayout1);
    //使选择框成为一个单元格
    table.getTableHeader().setFont(new java.awt.Font("Dialog", 0, 12));
//    table.getColumnModel().getColumn(2).setPreferredWidth( 300 );
//    table.getColumnModel().getColumn(4).setPreferredWidth( 50 );
    table.setFont(new java.awt.Font("Dialog", 0, 12));
    table.setDebugGraphicsOptions(0);
    table.setMaximumSize(new Dimension(2147483647, 100));
    table.setColumnSelectionAllowed(false);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    table.setRowHeight(20);
    //取得表格的行方法
    ListSelectionModel rowSM = table.getSelectionModel();
    jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    jScrollPane1.getViewport().setBackground(Color.white);
    jScrollPane1.setFont(new java.awt.Font("Dialog", 0, 12));
    jScrollPane1.setDebugGraphicsOptions(0);
    jScrollPane1.setSize(s);
    this.add(jScrollPane1, BorderLayout.CENTER);
//    table.setToolTipText("鼠标双击察看详细信息");
    jScrollPane1.getViewport().add(table);
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  }
  public static JTable2 createInstance(){
    return table2;
  }}

解决方案 »

  1.   

    使用jScrollPane1 = new JScrollPanel(table)就不会有问题了。
      

  2.   

    现在滚动条出来了,是这里的代码有问题:  Object[][] data = new Object[][] {    
                                               new Object[] {"","","","","",""},
                                               new Object[] {"","","","","",""},
                                               new Object[] {"","","","","",""},
                                               new Object[] {"","","","","",""},
                                               new Object[] {"","","","","",""},
                                            };
    改成Oject[][] data = new Object[9][];滚动条就出来了是只有9行的表,问题是现在加数据在表上显示不出来了,不知道为什么?郁闷呀!请高手指点。
      

  3.   

    可以直接Object[][] data = new Object[i][] int i=100;  让后在if中在实例化你的行应该就好了。