Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Две таблицы на фрейме.


Автор: skif18 28.1.2010, 09:39
Первая таблица :
Код

    private JTable getJTable() {
//        if (jTable == null) {
            jTable = new JTable();
            if(DB!=null){
                 try {
                        DB.finalize();
                    } catch (Throwable e1) {
                        // TODO Автоматически созданный блок catch
                        e1.printStackTrace();
                    }
            }
            if(DB2!=null){
                 try {
                        DB2.finalize();
                    } catch (Throwable e1) {
                        // TODO Автоматически созданный блок catch
                        e1.printStackTrace();
                    }
            }
            jTable.setModel(getDB());        
            int withCol[]= {5,160,60,25,50,40};
            setWith(withCol);
            /*jTable.changeSelection(0, 0,false,false);            
             jTable.requestFocus();*/
            
        jTable.addKeyListener(new java.awt.event.KeyListener() {   
                
            
            public void keyPressed(java.awt.event.KeyEvent e) {    
                if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                //    System.out.println("keyPressed()");
                    jTable1.changeSelection(0, 2,false,false);
                   jTable1.requestFocus();
                    e.consume();
                }
                
            }
                public void keyReleased(java.awt.event.KeyEvent e) {
                    if (e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_UP ) {
                     r = jTable.getSelectedRow();     
                        //System.out.println(r);            
                        if (jRadioButton.isSelected()){
                            kzprn =DB.getValueAt(r,0).toString();
                        }else if(jRadioButton1.isSelected()){
                             kzprn =DB5.getValueAt(r,0).toString();
                        }
                 jTable1.setModel(getDB2());    
              
                 
                 
                 for(int i=0;i<jTable1.getColumnCount();i++){
                     TableColumn col = jTable1.getColumnModel().getColumn(i);
                     if(i%3==0){
                         int width = 50;
                         col.setPreferredWidth(width); 
                     }else if((i%3)==1){
                         int width = 250;
                         col.setPreferredWidth(width); 
                     }else if((i%3)==2){
                         int width = 100;
                         col.setPreferredWidth(width);     
                     }
                 }
    
              
                }
                        
                }
                public void keyTyped(KeyEvent arg0) {
                    // TODO Автоматически созданная заглушка метода
                    
                }    
            });
            
        return jTable;
    }

Вторая таблица:
Код

    private JTable getJTable1() {
        if (jTable1 == null) {
            jTable1 = new JTable();
            jTable1.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyPressed(java.awt.event.KeyEvent e) {
                    //System.out.println("keyPressed()"); // TODO Auto-generated Event stub keyPressed()
                    
                    if (e.getKeyCode() >= KeyEvent.VK_0 && e.getKeyCode() <= KeyEvent.VK_9 || e.getKeyCode() >= KeyEvent.VK_NUMPAD0 && e.getKeyCode() <= KeyEvent.VK_NUMPAD9) {
                        
                            jTable1.editCellAt(jTable1.getSelectedRow(),2);
                        Component editor = jTable1.getEditorComponent();                      
                    //    editor.requestFocus(); // fix!
                         if (editor instanceof JTextField)
                         {
                             //System.out.println("keyPressed()");
                             ((JTextField)editor).selectAll();  // а это так, бонус...
                             ((JTextField)editor).setText("");
                             
                         } 
                        //System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(),jTable1.getSelectedColumn()));
                         t=jTable1.getSelectedRow();
                    }else    if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                    //    System.out.println("keyPressed()");
                        //System.out.println(r);
                        jTable.setModel(getDB());        
                        int withCol[]= {5,160,60,25,50,40};
                        setWith(withCol);
                        jTable.changeSelection(r, 0,false,false);            
                         jTable.requestFocus();
                        e.consume();
                    }
                    
                }
            });
            

        }
        return jTable1;
    }


При движении по первой таблице вторая обновляется.
При открытии этой формы первый раз все работает. Но повторное открытие не отображает вторую таблицу, хотя данные обновляются в модели.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)