Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    JTable ferma tutto il programma

    Salve a tutti. Aggiungendo al mio JFrame una JTable (senza modificarla, lasciandola esattamente così com'è) e lanciando l'applicazione se provo a cliccare su una cella della tabella tutto il programma si blocca per 10/15 s non rispondendo più ai comandi. Come mai ?
    P.S.
    Sto usando netbeans 7.3.1
    Grazie in anticipo a tutti

  2. #2
    non siamo indovini...
    posta il codice, può trattarsi di qualsiasi cosa.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    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                   
    }

  4. #4
    Il codice si posta usando il tag CODE o perde l'indentazione
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Fatto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.