Untitled

mail@pastecode.io avatar
unknown
plain_text
6 months ago
5.5 kB
12
Indexable
Never
package zad1;

import javax.swing.*;

import javax.swing.table.TableCellRenderer;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class CountryTable extends JTable {
    private javax.swing.JTextField jTextField1;
    private javax.swing.JLabel jLabel;
    private javax.swing.JLabel jlabel2;

    ArrayList<String> name = new ArrayList<String>();
    ArrayList<String> capital = new ArrayList<String>();
    ArrayList<String> population = new ArrayList<String>();
    List<String> parts = new ArrayList<String>();
    List<String> parts1 = new ArrayList<String>();
    JTable j;

//    private void jTextFieldKeyPressed(java.awt.event.KeyEvent evt) {
//        char c = evt.getKeyChar();
//        if (Character.isLetter(c)) {
//            jTextField1.setEditable(false);
//            jLabel.setText("Please enter number only");
//        } else
//            jTextField1.setEditable(true);
//
//    }

    public void reader() {
        try (BufferedReader br = new BufferedReader(new FileReader("C:/Users/kacpe/Desktop/UTP1_MK_S27662/data/countries.txt"))) {
            String line;
            int counter = 0;
            boolean firstLineProcessed = false;
            for (int j = 0; j < 9; j += 3) {
                for (int i = 0; i < 3; i++) {
                    while ((line = br.readLine()) != null) {
                        if (!firstLineProcessed) {
                            parts1 = Arrays.asList(line.split("\t"));
                            columnNames[0] = parts1.get(0);
                            columnNames[1] = parts1.get(1);
                            columnNames[2] = parts1.get(2);
                            columnNames[3] = parts1.get(3);
                            firstLineProcessed = true;
                        }
                        if (counter == 0) {
                            counter++;
                            i--;
                            break;
                        }
                        parts = Arrays.asList(line.split("\t"));
                        name.add(i, parts.get(j));
                        capital.add(i, parts.get(j + 1));
                        population.add(i, parts.get(j + 2));

                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public CountryTable(String countriesFileName) {
    }

    public String[] columnNames = new String[4];

    public JTable create() {
        reader();
        String[] columnNames1 = {columnNames[0], columnNames[1], columnNames[2], columnNames[3], "Data"};
        String[][] data = {
                {name.get(0), capital.get(0), population.get(0), "", ""},
                {name.get(1), capital.get(1), population.get(1), "", ""},
                {name.get(2), capital.get(2), population.get(2), "", ""}
        };
        j = new JTable(data, columnNames1) {
            @Override
            public boolean isCellEditable(int row, int col) {
                if (col == 2) {
                    return true;
                } else {
                    return false;
                }
            }

            @Override
            public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
                Component c = super.prepareRenderer(renderer, row, col);
                if (col == 2) {
                    Object cellValue = getValueAt(row, col);
                    if (cellValue instanceof Integer) {
                        int intValue = (Integer) cellValue;
                        c.setForeground(getColor(intValue));
                    } else {
                        c.setForeground(getForeground());
                    }
                } else {
                    c.setForeground(getForeground());
                }
                return c;
            }

            private Color getColor(int intValue) {
                Color color = null;
                if (intValue > 0) {
                    color = Color.GREEN;
                } else if (intValue < 0) {
                    color = Color.RED;
                } else {
                    color = getForeground();
                }
                return color;
            }
        }
        ;
        j.setBounds(40, 50, 300, 400);
        JScrollPane sp = new JScrollPane(j);
        return j;
    }
}

package zad1;


import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Main {

  private JTable ctab;

  public void createTable(String countriesFileName) throws Exception {
    ctab = new CountryTable(countriesFileName).create();
  }

  public void showGui() {
    SwingUtilities.invokeLater( new Runnable() {
      public void run() {
        JFrame f = new JFrame("Countries table");
        f.add( new JScrollPane(ctab) );
        f.pack();
        f.setLocationRelativeTo(null);
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        f.setVisible(true);
      }
    });
  }

  public static void main(String[] args)  {
    Main main = new Main();
    try {
      main.createTable("data/countries.txt");
      main.showGui();
    } catch(Exception exc) {
    }
  }
}