JAVA - как использовать данные, вставленные в jtable, для получения квитанции
я работаю над программой, но мне не нравится, как выходит квитанция, кажется, что я получаю все данные из jtable и получаю также таблицу, и она не выходит так, как должна выглядеть стандартная распознанная квитанция
JTable имеет следующее
Название Продукта Описание Кол-Во Цена Единицы Измерения Сумма Скидки
Ноутбуки Dell 4 200 0 800
Ноутбуки Lenovo whatever 5 400 0 2000
Идея состоит в том, чтобы иметь квитанцию, которая показывает только имя продукта и сумму, я имею в виду простую базовую квитанцию и не показывает таблицу.
Предполагаемые результаты
Название Продукта Количество
Ноутбуки Dell------------------------800
Ноутбуки Lenovo----------------------2000
Что я уже пробовал:
Вот код, который я написал, который также приносит мне таблицу.
String value5 = jLsub_total.getText(); String value6 = jTcustomerName.getText(); String value7 = jTcontact.getText(); String value8 = jTsalesP.getText(); String value9 = jTlocation.getText(); int p = JOptionPane.showConfirmDialog(null,"Click yes to generate Receipt","RECEIPT", JOptionPane.YES_NO_OPTION); if(p==0){ Document document = new Document(); Rectangle rect = new Rectangle(350,700); document.setPageSize(rect); try{ PdfWriter.getInstance(document, new FileOutputStream("RECEIPT.pdf")); document.open(); Paragraph paragraph = new Paragraph(); document.add(new Paragraph(jTcompany_name.getText().toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,15,Font.BOLD))); document.add(new Paragraph("RECEIPT.", FontFactory.getFont(FontFactory.TIMES_BOLD,15,Font.BOLD))); document.add(new Paragraph(new Date().toString())); document.add(new Paragraph("_________________________________________")); document.add(new Paragraph(" ")); document.add(new Paragraph(" ")); PdfPTable pdfTable = new PdfPTable(jTsalesview.getColumnCount()); //adding table headers for (int i = 0; i < jTsalesview.getColumnCount(); i++) { pdfTable.addCell(jTsalesview.getColumnName(i)); } //extracting data from the JTable and inserting it to PdfPTable for (int rows = 0; rows < jTsalesview.getRowCount() ; rows++) { for (int cols = 0; cols < jTsalesview.getColumnCount(); cols++) { pdfTable.addCell(jTsalesview.getModel().getValueAt(rows, cols).toString()); } } document.add(pdfTable); paragraph.add(new Paragraph("SUB-TOTAL-----------------"+value5,FontFactory.getFont(FontFactory.TIMES_ROMAN,12,Font.PLAIN))); document.add(new Paragraph(" ")); document.add(new Paragraph(" ")); document.add(new Paragraph(" ")); document.add(new Paragraph("Customer Name-------------"+value6,FontFactory.getFont(FontFactory.TIMES_ROMAN,12,Font.PLAIN))); document.add(new Paragraph("Contact-----------------------"+value7,FontFactory.getFont(FontFactory.TIMES_ROMAN,12,Font.PLAIN))); document.add(new Paragraph("Sales person------------------"+value8,FontFactory.getFont(FontFactory.TIMES_ROMAN,12,Font.PLAIN))); document.add(new Paragraph("Location----------------------"+value9,FontFactory.getFont(FontFactory.TIMES_ROMAN,12,Font.PLAIN))); document.add(paragraph); document.close(); JOptionPane.showMessageDialog(null, "Successfully Generated"); }catch(Exception e ){ e.printStackTrace(); } }
я хотел бы избавиться от стола.
Richard MacCutchan
Вопрос не ясен. Если у вас есть все элементы из вашей записи базы данных, то вам будет несложно извлечь только два из них.
Lamotech
идея заключается в том, что как только клиент покупает товары, они добавляются в базу данных и также появляются в jtable, поскольку jtable содержит только товары, купленные клиентом, и сбрасывается после того, как продавец имеет дело с другим клиентом, вот как я получаю данные из jtable.
Lamotech
@ Richard, покажи мне, как извлечь jst этих двоих из базы данных и добавить их в квитанцию.
Richard MacCutchan
Извините, но я не понимаю, в чем ваша трудность. У вас есть запись в базе данных, и вы знаете, какие два поля вы хотите включить в счет-фактуру, так что это просто вопрос извлечения двух элементов, форматирования их в текстовые поля и печати их на счете-фактуре.
Lamotech
Спасибо, позвольте мне попробовать, надеюсь, это сработает