codice:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package compitovacanze;
import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
/**
*
* @author Marco Cadei
*/
public class MainWindow extends javax.swing.JFrame implements Runnable{
/**
* Creates new form MainWindow
*/
private static final String DB_NAME = "prova.dat";
ArrayList<Point> points = new ArrayList<>();
Graph graph = new Graph(points);
boolean working = true;
public MainWindow(){
points.add(new Point(10,10));
points.add(new Point(5,20));
points.add(new Point(30,80));
points.add(new Point(75,60));
points.add(new Point(100,100));
initComponents();
try {
points = IOFile.Read(DB_NAME);
} catch (ClassNotFoundException | IOException ex) {
points = new ArrayList();
IOFile.Save(points, DB_NAME);
}
// fillTable(points);
setVisible(true);
setLayout(null);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setBackground(Color.WHITE);
Thread t = new Thread(this);
t.start();
}
@Override
public void run()
{
while(true)
{
synchronized(this)
{
if(working)
{
PointLabel.setText("P("+(int)((Clock)ClockPanel).getActualTime()+"; )");
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
System.out.println(ex.toString());
}
((Clock)ClockPanel).increaseTime(1);
}
}
}
}
void suspendThread(){
working = false;
}
synchronized void resumeThread() {
working = true;
//notify();
}
private void fillTable(ArrayList<Point> p)
{
for(int i = 0; i < p.size(); i++)
{
PointsTable.setValueAt(p.get(i).getX(), i, 0);
PointsTable.setValueAt(p.get(i).getY(), i, 1);
}
}
private ArrayList<Point> readtable()
{
points.clear();
for(int i = 0; i < PointsTable.getRowCount(); i++)
{
if(PointsTable.getValueAt(i, 0) != null && PointsTable.getValueAt(i, 1) != null)
{
points.add(new Point(Integer.parseInt(PointsTable.getValueAt(i, 0).toString()), Integer.parseInt(PointsTable.getValueAt(i, 1).toString())));
}
}
return points;
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
ClockPanel = new Clock(250);
GraphPanel = new Graph(points);
PointLabel = new javax.swing.JLabel();
SaveButton = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
PointsTable = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setBackground(new java.awt.Color(255, 255, 255));
setBounds(new java.awt.Rectangle(0, 0, 0, 0));
setPreferredSize(new java.awt.Dimension(1366, 730));
ClockPanel.setBackground(new java.awt.Color(255, 255, 255));
javax.swing.GroupLayout ClockPanelLayout = new javax.swing.GroupLayout(ClockPanel);
ClockPanel.setLayout(ClockPanelLayout);
ClockPanelLayout.setHorizontalGroup(
ClockPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 483, Short.MAX_VALUE)
);
ClockPanelLayout.setVerticalGroup(
ClockPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 270, Short.MAX_VALUE)
);
GraphPanel.setBackground(new java.awt.Color(255, 255, 255));
javax.swing.GroupLayout GraphPanelLayout = new javax.swing.GroupLayout(GraphPanel);
GraphPanel.setLayout(GraphPanelLayout);
GraphPanelLayout.setHorizontalGroup(
GraphPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 0, Short.MAX_VALUE)
);
GraphPanelLayout.setVerticalGroup(
GraphPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 316, Short.MAX_VALUE)
);
PointLabel.setFont(new java.awt.Font("Segoe UI Light", 0, 24)); // NOI18N
PointLabel.setForeground(new java.awt.Color(255, 0, 0));
SaveButton.setFont(new java.awt.Font("Segoe UI Light", 0, 24)); // NOI18N
SaveButton.setText("Save");
SaveButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SaveButtonActionPerformed(evt);
}
});
PointsTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(PointsTable);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(61, 61, 61)
.addComponent(SaveButton, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 247, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(ClockPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(PointLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 333, Short.MAX_VALUE))
.addComponent(GraphPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(GraphPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(5, 5, 5)
.addComponent(ClockPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(12, 12, 12)
.addComponent(PointLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addGap(57, 57, 57)
.addComponent(SaveButton)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void SaveButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
points = readtable();
Collections.sort(points);
fillTable(points);
IOFile.Save(points, DB_NAME);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tu...feel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainWindow().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel ClockPanel;
private javax.swing.JPanel GraphPanel;
private javax.swing.JLabel PointLabel;
private javax.swing.JTable PointsTable;
private javax.swing.JButton SaveButton;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration
}