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


Автор: Swatch 10.9.2007, 08:13
добрый день.

Подскажите, пожалуйста, как можно сделать формат ячейки в таблице? Формат должен быть следующий: ДД/ММ/ГГГГ. 
Надо, чтобы при редактировании ячейки, в которую должна быть введена дата, появлялось __/__/____. и если пользователь ввобит дату, что чтобы знаки "_" заменялись на вводимые цифры, а знаки "/" оставались на месте.

Добавлено через 14 минут и 29 секунд
Хммм.... поставила во второй и третий столбец в ячейки jFormattedTextField с маской. Вот так:
Код

        jftf=new JFormattedTextField();
        jTable1.setEnabled(true);
        
        TableColumn column1=jTable1.getColumnModel().getColumn(1);
        TableColumn column2=jTable1.getColumnModel().getColumn(2);
        column1.setCellEditor(new DefaultCellEditor(jftf));
        column2.setCellEditor(new DefaultCellEditor(jftf));
        DefaultTableCellRenderer renderer1=new DefaultTableCellRenderer();
        column1.setCellRenderer(renderer1);
        DefaultTableCellRenderer renderer2=new DefaultTableCellRenderer();
        column2.setCellRenderer(renderer2);
        
        try {
            mf = new MaskFormatter("##/##/####");
        } catch (ParseException ex) {
        }
        mf.setPlaceholderCharacter('_');
        mf.install(jftf); 


Только раньше ячейка начинала редактироваться по одному клику, благодаря вот этому:
Код

 DefaultCellEditor editor1 = (DefaultCellEditor)jTable1.getDefaultEditor(Object.class);    
        editor1.setClickCountToStart(1);


А теперь только по дабл клик редактируется. Реально редактирование по синглклик вернуть?

Автор: dorogoyIV 10.9.2007, 12:43
Код

  ((DefaultCellEditor)column_1.getCellEditor()).setClickCountToStart(1);

Автор: aliks 17.12.2008, 17:42
Можно записать немного короче, использование рендера здесь ни к чему 

Код

        jftf=new JFormattedTextField();
        jTable1.setEnabled(true);
        
        jTable1.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(jftf));
        jTable1.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(jftf));
            /*DefaultTableCellRenderer renderer1=new DefaultTableCellRenderer();
               column1.setCellRenderer(renderer1);
               DefaultTableCellRenderer renderer2=new DefaultTableCellRenderer();
               column2.setCellRenderer(renderer2);*/
        
        try {
            mf = new MaskFormatter("##/##/####");
        } catch (ParseException ex) {
        }
        mf.setPlaceholderCharacter('_');
        mf.install(jftf); 

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