Как передать данные Jtable в один кадр в другой в Java NetBeans - PullRequest
0 голосов
/ 13 января 2019

Я создаю простую систему продажи инвентаря. все работает нормально, но я хочу отправить данные jtable в печать кадра. Я могу отправить только общее значение для печати кадра. Jtable данные, как отправлять.

Снимок экрана системы продаж enter image description here

Код Jtable

 DefaultTableModel dtm;
    dtm = (DefaultTableModel) jTable1.getModel();
    dtm.addRow(new Object[]
    { 
        txtproduct.getText(),
        txtprice.getText(),

    });

таким образом, я добавил данные в JTable, мне нужно передать данные на печать кадра. я пробовал таким образом
новая печать (всего, jTable1.getModel ()). setVisible (true); но ошибка воспроизведения не найдена подходящего конструктора

Печать квитанции enter image description here

Pos.java

String total = txttotal.getText();        
new print(total,jTable1.getModel()).setVisible(true);

Print.java

String ltotal;
 public print(String name,String age,String total)
{
   initComponents(); 
  this.ltotal = total;
  txtarea.setText(txtarea.getText() +"************************************\n"); 
  txtarea.setText(txtarea.getText() +"**********LOS Super*********\n");
  txtarea.setText(txtarea.getText() +"\n");
  txtarea.setText(txtarea.getText() +"Total............"  + ltotal + "\n");

}

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Если вы хотите вызвать конструктор наподобие new print(total,jTable1.getModel()), вы должны написать этот конструктор так:

(Я думаю, вы получите ошибку, потому что ваша программа не имеет этого конструктора. Если вы добавите это, ошибка исчезнет.)

public print(String total, TableModel tableModel)
{
  initComponents();
  this.ltotal = total;
  txtarea.setText(txtarea.getText() +"************************************\n");
  txtarea.setText(txtarea.getText() +"**********LOS Super*********\n");
  txtarea.setText(txtarea.getText() +"\n");
  txtarea.setText(txtarea.getText() +"Total............"  + ltotal + "\n");

  txtarea.setText(txtarea.getText() + "Product    Price\n");
  for (int i = 0; i < tableModel.getRowCount(); i++)
  {
    String product = (String) tableModel.getValueAt(i, 0);
    String price = (String) tableModel.getValueAt(i, 1);
    txtarea.setText(txtarea.getText() + product + "    " + price + "\n");
  }
}

Еще одно предложение по улучшению:
Вместо многократного вызова txtarea.setText(), вы можете добавить текст к переменной String и вызывать setText() только один раз в конце.

0 голосов
/ 13 января 2019

Одна вещь, которую вы можете сделать здесь, если вы хотите получить доступ к содержимому одной Jtable из другой панели, это то, что вы создаете размеры массива, которые будут зависеть от типа данных, например, если есть два столбца, то будет два измерения и т. д.

Здесь вы можете сделать этот массив статическим или общедоступным, который предоставляет данные в таблицу и получать доступ к содержимому из другой панели.

Вот пример кода:

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class JTableExamples { 
    // frame 
    JFrame f; 
    // Table 
    JTable j; 

    // Constructor 
    JTableExamples() 
    { 
        // Frame initiallization 
        f = new JFrame(); 

        // Frame Title 
        f.setTitle("JTable Example"); 

        // Data to be displayed in the JTable 
        public String[][] data = { 
            { "Kundan Kumar Jha", "4031", "CSE" }, 
            { "Anand Jha", "6014", "IT" } 
        }; 

        // Column Names 
        String[] columnNames = { "Name", "Roll Number", "Department" }; 

        // Initializing the JTable 
        j = new JTable(data, columnNames); 
        j.setBounds(30, 40, 200, 300); 

        // adding it to JScrollPane 
        JScrollPane sp = new JScrollPane(j); 
        f.add(sp); 
        // Frame Size 
        f.setSize(500, 200); 
        // Frame Visible = true 
        f.setVisible(true); 
    } 

    // Driver  method 
    public static void main(String[] args) 
    { 
        new JTableExamples(); 
    } 
} 

Теперь, так как здесь массивы данных являются общедоступными, вы можете получить к ним доступ из других сцен.

...