У меня есть JTable
, который будет заполняться динамически, и я хочу, чтобы размер таблицы всегда изменялся в соответствии с количеством строк. Мне не нужна прокрутка, потому что таблица находится на панели, а содержимое панели нужно распечатать. Я пробовал это:
Dimension d = itemsTable.getPreferredSize();
//scrollPane.setPreferredSize(new Dimension(d.width,itemsTable.getRowHeight()*itemsTable.getRowCount()+10));
itemsTable.setPreferredScrollableViewportSize(new Dimension(d.width,itemsTable.getRowHeight()*itemsTable.getRowCount()+1))
Но, похоже, это не работает.
public void getDetails(PosView pv){
Connection con = con();
DefaultTableModel model = (DefaultTableModel)pv.getItemsTable().getModel();
String date = null;
double total = 0.0, paid = 0.0;
try{
ps = con.prepareStatement("SELECT DISTINCT AMOUNT_PAYABLE, AMOUNT_PAID, BALANCE, DATE FROM SALES WHERE PAYMENT_ID = ?");
ps.setString(1, paymentId);
rs = ps.executeQuery();
while(rs.next()){
total = (rs.getDouble(1));
paid += (rs.getDouble(2));
date = rs.getString(4);
}
double balance = total - paid;
pv.setDate(date);
pv.setPaymentId(paymentId);
ps = con.prepareStatement("SELECT QUANTITY, ITEM_NAME, SELLING_PRICE, TOTAL FROM ITEMS_BOUGHT WHERE ID = ?");
ps.setString(1, paymentId);
rs = ps.executeQuery();
while(rs.next()){
Object data[] = {rs.getInt(1), rs.getString(2), rs.getDouble(3),rs.getDouble(4)};
model.addRow(data);
}
logActivity(userId, "PAYMENT RECEIPT "+ paymentId +" GENERATED", con);
pv.setTotal(total);
pv.setPaid(paid);
pv.setBalance(balance);
}catch(SQLException e){
showMessageDialog(null, e.getMessage());
}finally{
try {
if(ps!=null)
ps.close();
con.close();
}catch(Exception e){}
}
}
this.setSize(this.getWidth(), itemsTable.getRowHeight()*itemsTable.getRowCount()+1);
- person Beniton   schedule 20.05.2016JTable
имеет API для печати и он не заботится оJScrollPane
и обрабатывает разрывы страниц, верхние и нижние колонтитулы - person MadProgrammer   schedule 20.05.2016