繁体   English   中英

更改jtable的列宽

[英]Changing the column width of the jtable

我试图更改一个jtable的列的宽度,但是当我编译代码时,该宽度保持不变。

            jTable2.setBackground(Color.WHITE);
        jTable2.setForeground(Color.BLACK);
       jTable2.setShowHorizontalLines(true);
       jTable2.setShowVerticalLines(true);
     jTable2.setRowHeight(50);
      jTable2.getTableHeader().getBackground().brighter();
     jTable2.getTableHeader().setBackground(Color.RED);
       jTable2.getTableHeader().setForeground(Color.blue);
    column1=  new ArrayList<> ();

     column1.add("Transaction Id");
     column1.add("Transaction Date");
     column1.add("Narration");
     column1.add("Value Date");
     column1.add("Debit Amount");
     column1.add("Credit Amount");
     column1.add("Ledger Balance");
     column1.add("Credit Account No.");
     column1.add("Credit Account Name");
     column1.add("Transaction Ref No.");
     column1.add("Cheque No.");
     column1.add("Transaction Type");
     column1.add("Staff ID");
     column1.add("Transaction Time");
     **for (int i = 0; i < jTable2.getModel().getColumnCount(); i++) {

   if (i == 2) {

   column=jTable2.getColumnModel().getColumn(i);
   column.setPreferredWidth(200);

   } else {
   column.setPreferredWidth(50);
   }}** 

    JDBCConnectionPigs csx = new JDBCConnectionPigs();
                    Connection csx1 = csx.createConnection();
   try {
   csx1.setAutoCommit(false); 
    PreparedStatement ps1 = csx1.prepareStatement("SELECT * FROM            bsanca01100000310");
    ResultSet rst=ps1.executeQuery();

    data5= new ArrayList<>();
    int i=0;
    while (rst.next())

   {
  data4= new ArrayList<> ();
 data4.add(0, rst.getInt("trn_id")+"");
   data4.add(1, rst.getDate("trn_date")+"");     
   data4.add(2, rst.getString("narration"));         
    data4.add(3, rst.getDate("value_date")+""); 
     data4.add(4, rst.getString("debit")); 
      data4.add(5, rst.getString("credit"));
      data4.add(6, rst.getString("ledger_balance"));
      data4.add(7, rst.getString("credit_account_no"));
      data4.add(8, rst.getString("credit_account_name"));
      data4.add(9, rst.getString("tra_ref_number"));
       data4.add(10, rst.getString("chq_number"));
       data4.add(11, rst.getString("trn_type"));
      data4.add(12, rst.getString("staff_id"));
        data4.add(13, rst.getTime("trn_time")+"");
           data5.add(i, data4);
         i++;
         }
       model= new    MyTableModel(data5,column1);  
        jTable2.setModel(model);

          csx1.setAutoCommit(true);
           }                                        
         catch (SQLException ex) {

               JOptionPane.showMessageDialog(null, ex.toString());

             }

谁能帮助我确定问题出在哪里,或者是实现此问题的更好方法。 抱歉,沐浴者因为问题接缝微不足道,但给了我很多麻烦。

jTable2.setModel(model);

上面的陈述就是问题所在。 更改表的TableModel时,将重新创建TableColumnModel ,因此您将丢失所有自定义列宽。

更改模型后,您需要重置列宽。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM