import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
/**
* DOCUMENT ME!
*
* @author $author$
* @version $Revision$
*/
public class Lottery extends JFrame {
private static int NUM_HEADERS = 10;
private JTable table;
private DefaultTableModel tableModel;
public void setGui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tableModel = new DefaultTableModel(new Vector(), makeColumnHeaders());
table = new JTable(tableModel);
table.addMouseListener(new RowSorter());
JScrollPane sp = new JScrollPane(table);
getContentPane().add(sp);
}
private Vector makeColumnHeaders() {
String headers = "Draw Date, Ball 1, Ball 2, Ball 3, Ball 4, Ball 5, Ball 6, Bonus Ball, Ball Set, Machine";
return new Vector(Arrays.asList(headers.split("\\s*,\\s*")));
}
public void start() {
new TableFiller().execute();
}
public static void main(String[] args) {
Lottery reader = new Lottery();
reader.setGui();
reader.setSize(600, 300);
reader.setVisible(true);
reader.start();
}
private class RowSorter extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
int[] selection = table.getSelectedRows();
Set numbers = new TreeSet();
for (int i = 0; i < selection.length; i++) {
for(int col = 1;col <= 6;col++) {
int row = selection[i];
if (row == 0) {
continue;
}
String val = tableModel.getValueAt(row, col).toString();
val = String.format("%02d", Integer.parseInt(val));
numbers.add(val);
}
}
JOptionPane.showMessageDialog(Lottery.this, numbers);
}
}
private class TableFiller extends SwingWorker {
public Object doInBackground() {
Vector allRows = new Vector();
String line = null;
try {
int rowCount = 0;
BufferedReader in = new BufferedReader(new InputStreamReader(
new URL(
"http://www.national-lottery.co.uk/player/files/Lotto.csv").openStream()));
while ((line = in.readLine()) != null) {
String[] tokens = line.split("\\s*,\\s*");
rowCount++;
if (tokens.length == NUM_HEADERS) {
Vector row = new Vector(Arrays.asList(tokens));
//System.out.println(row);
//allRows.add(row);
publish(row);
}
}
System.out.printf("%d row(s) found\n", rowCount);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
return allRows;
}
public void process(List x) {
Vector row = (Vector) x.get(0);
tableModel.addRow(row);
}
}
}
Open in new window