private JTable getJTable1() {
        if (jTable1 == null) {
            DefaultTableModel dm = new DefaultTableModel();
            dm.setDataVector(new Object[][]{{}}, new Object[]{"Card", "Qty", "1st", "2nd", "3rd", "4th", "5th", "6th", "7th"});

            jTable1 = new JTable(dm);
            CardList rList;
            rList = tModel.getCards();
            String[] cardsName = new String[rList.size()];
            int cCount;
            float fCount;
            float firstTurnF, secondTurnF, thirdTurnF, fourthTurnF, fivethTurnF, sixthTurnF, seventhTurnF;

            for (int i = 0; i < rList.size(); i++) {
                cardsName[i] = rList.getCard(i).getName();
            }
            Arrays.sort(cardsName);
            jTable1.setValueAt("Few cards.", 0, 0);

            if (rList.size() >= 40) {
                jTable1.setValueAt(cardsName[0], 0, 0);
                cCount = 1;
                for (int i = 1; i < cardsName.length; i++) {
                    if (cardsName[i].equals(cardsName[i - 1])) {
                        cCount = cCount + 1;

                    } else {
                        dm.addRow(new Object[][]{{}});
                        jTable1.setValueAt(cardsName[i], dm.getRowCount() - 1, 0);
                        jTable1.setValueAt(cCount, dm.getRowCount() - 2, 1);
                        fCount = cCount;

                        firstTurnF = fCount / rList.size();
                        BigDecimal firstTurn = new BigDecimal(firstTurnF * 100);
                        firstTurn = firstTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(firstTurn.toString() + " %", dm.getRowCount() - 2, 2);

                        secondTurnF = (1 - firstTurnF) * fCount / (rList.size() - 1) + firstTurnF;
                        BigDecimal secondTurn = new BigDecimal(secondTurnF * 100);
                        secondTurn = secondTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(secondTurn.toString() + " %", dm.getRowCount() - 2, 3);

                        thirdTurnF = (1 - secondTurnF) * fCount / (rList.size() - 2) + secondTurnF;
                        BigDecimal thirdTurn = new BigDecimal(thirdTurnF * 100);
                        thirdTurn = thirdTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(thirdTurn.toString() + " %", dm.getRowCount() - 2, 4);

                        fourthTurnF = (1 - thirdTurnF) * fCount / (rList.size() - 3) + thirdTurnF;
                        BigDecimal fourthTurn = new BigDecimal(fourthTurnF * 100);
                        fourthTurn = fourthTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(fourthTurn.toString() + " %", dm.getRowCount() - 2, 5);

                        fivethTurnF = (1 - fourthTurnF) * fCount / (rList.size() - 4) + fourthTurnF;
                        BigDecimal fivethTurn = new BigDecimal(fivethTurnF * 100);
                        fivethTurn = fivethTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(fivethTurn.toString() + " %", dm.getRowCount() - 2, 6);

                        sixthTurnF = (1 - fivethTurnF) * fCount / (rList.size() - 5) + fivethTurnF;
                        BigDecimal sixthTurn = new BigDecimal(sixthTurnF * 100);
                        sixthTurn = sixthTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(sixthTurn.toString() + " %", dm.getRowCount() - 2, 7);

                        seventhTurnF = (1 - sixthTurnF) * fCount / (rList.size() - 6) + sixthTurnF;
                        BigDecimal seventhTurn = new BigDecimal(seventhTurnF * 100);
                        seventhTurn = seventhTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(seventhTurn.toString() + " %", dm.getRowCount() - 2, 8);

                        cCount = 1;
                    }
                    if (i == cardsName.length - 1) {
                        jTable1.setValueAt(cCount, dm.getRowCount() - 1, 1);
                        fCount = cCount;

                        firstTurnF = fCount / rList.size();
                        BigDecimal firstTurn = new BigDecimal(firstTurnF * 100);
                        firstTurn = firstTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(firstTurn.toString() + " %", dm.getRowCount() - 1, 2);

                        secondTurnF = (1 - firstTurnF) * fCount / (rList.size() - 1) + firstTurnF;
                        BigDecimal secondTurn = new BigDecimal(secondTurnF * 100);
                        secondTurn = secondTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(secondTurn.toString() + " %", dm.getRowCount() - 1, 3);

                        thirdTurnF = (1 - secondTurnF) * fCount / (rList.size() - 2) + secondTurnF;
                        BigDecimal thirdTurn = new BigDecimal(thirdTurnF * 100);
                        thirdTurn = thirdTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(thirdTurn.toString() + " %", dm.getRowCount() - 1, 4);

                        fourthTurnF = (1 - thirdTurnF) * fCount / (rList.size() - 3) + thirdTurnF;
                        BigDecimal fourthTurn = new BigDecimal(fourthTurnF * 100);
                        fourthTurn = fourthTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(fourthTurn.toString() + " %", dm.getRowCount() - 1, 5);

                        fivethTurnF = (1 - fourthTurnF) * fCount / (rList.size() - 4) + fourthTurnF;
                        BigDecimal fivethTurn = new BigDecimal(fivethTurnF * 100);
                        fivethTurn = fivethTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(fivethTurn.toString() + " %", dm.getRowCount() - 1, 6);

                        sixthTurnF = (1 - fivethTurnF) * fCount / (rList.size() - 5) + fivethTurnF;
                        BigDecimal sixthTurn = new BigDecimal(sixthTurnF * 100);
                        sixthTurn = sixthTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(sixthTurn.toString() + " %", dm.getRowCount() - 1, 7);

                        seventhTurnF = (1 - sixthTurnF) * fCount / (rList.size() - 6) + sixthTurnF;
                        BigDecimal seventhTurn = new BigDecimal(seventhTurnF * 100);
                        seventhTurn = seventhTurn.setScale(1, BigDecimal.ROUND_HALF_UP);
                        jTable1.setValueAt(seventhTurn.toString() + " %", dm.getRowCount() - 1, 8);

                    }

                }
            }

            jTable1.getColumn("Qty").setMaxWidth(50);
            jTable1.getColumn("1st").setMaxWidth(50);
            jTable1.getColumn("2nd").setMaxWidth(50);
            jTable1.getColumn("3rd").setMaxWidth(50);
            jTable1.getColumn("4th").setMaxWidth(50);
            jTable1.getColumn("5th").setMaxWidth(50);
            jTable1.getColumn("6th").setMaxWidth(50);
            jTable1.getColumn("7th").setMaxWidth(50);
            jTable1.setRowHeight(18);
            jTable1.setPreferredSize(new java.awt.Dimension(576, 18 * dm.getRowCount() + 3));
        }
        return jTable1;
    }