Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSpinner problem 
:(
    Опции темы
bulat01
Дата 24.5.2012, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0



Здравствуйте все,
у меня проблема со спиннером.

неужели никто не работал с джава спиннером? 
почему-то принтует по 2 значения (если нажать стрелку верх) и не принтует нужную дату, а если нажать стрелку вниз - тоже наормально не отрабатывает.
все перепробовал - варианты закончились. 

Пож-та посоветуйте.


Код

package timer1;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.Timer;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class DateGeneraton {
  
  static JSpinner.DateEditor de1;
  static JSpinner s1;
  
  static JSpinner.DateEditor de2;
  static JSpinner s2;
  
  static JSpinner.DateEditor de3;
  static JSpinner s3;
  
  static JSpinner.DateEditor de4;
  static JSpinner s4;
  
  static JSpinner.DateEditor de5;
  static JSpinner s5;
  
  static JSpinner.DateEditor de6;
  static JSpinner s6;
  
  static int date;
  static int month1;
  static int year;
  static int hour;
  static int minute;
  static int second;
  
  
  private static JSeparator jSeparator1;
  
  public static void main(final String args[]) {
      
    final Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("Tashkent"));
    Date today = aGMTCalendar.getTime();      
    
    JFrame frame = new JFrame("JSpinner Dates\\Time");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 250);
    
    
    Container c = frame.getContentPane();
    c.setLayout(new GridLayout(0, 2));
    
    //*****************************************************************************************
    
    c.add(new JLabel(" Date "));
    s1 = new JSpinner((SpinnerModel) new SpinnerDateModel(today, null, null, Calendar.DATE));
    c.add(s1);
    de1 = new JSpinner.DateEditor(s1, "dd");
    s1.setEditor(de1);
    
    //*****************************************************************************************
    
    c.add(new JLabel(" Month "));
    s2 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.MONTH));
    c.add(s2);
    de2 = new JSpinner.DateEditor(s2, "MMMM");
    s2.setEditor(de2);
    
    //*****************************************************************************************
    
    c.add(new JLabel(" Year "));
    s3 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.YEAR));
    c.add(s3);
    de3 = new JSpinner.DateEditor(s3, "yyyy");
    s3.setEditor(de3);
    
   
    //*****************************************************************************************
    
       ChangeListener date_listener = new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
           
           Calendar cal = de1.getFormat().getCalendar();
              date = cal.get(Calendar.DATE);
              
              System.out.println(" Day " + date );
              
              
              //DataVariablesStore.setDate(date);
              //DataVariablesStore.saying1();
            }
       };
       

    
    ChangeListener month_listener = new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
             Calendar cal = de2.getFormat().getCalendar();
           month1 = cal.get(Calendar.MONTH);
           System.out.println(" Month " + month1 );
           DataVariablesStore.setMonth(month1);
             
           DataVariablesStore.saying2();
        }
      };
      
      
      
      ChangeListener year_listener = new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
             Calendar cal = de3.getFormat().getCalendar();
             year = cal.get(Calendar.YEAR);
             DataVariablesStore.setYear(year);
             
              System.out.println(" Year " + year );
              //now need to convert value to int and pass it to schedule method - YEAR 
          }
       };
    
        
        
    s1.addChangeListener(date_listener);
    s2.addChangeListener(month_listener);  
    s3.addChangeListener(year_listener);
    
   
    
    //************************************************************************************
    
    c.add(new JSeparator(SwingConstants.HORIZONTAL));
    c.setLayout(new GridLayout(0, 2));
    
    c.add(new JSeparator(SwingConstants.HORIZONTAL));
    
    c.add(new JLabel(" Hour "));
    s4 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.HOUR_OF_DAY));
    c.add(s4);
    de4 = new JSpinner.DateEditor(s4, "HH");
    s4.setEditor(de4);
    
    
    c.add(new JLabel(" Minute "));
    s5 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.MINUTE));
    c.add(s5);
    de5 = new JSpinner.DateEditor(s5, "mm");
    s5.setEditor(de5);
      
    
    c.add(new JLabel(" Second "));
    s6 = new JSpinner(new SpinnerDateModel(today, null, null, Calendar.SECOND));
    c.add(s6);
    de6 = new JSpinner.DateEditor(s6, "ss");
    s6.setEditor(de6);
    
    
    ChangeListener hour_listener = new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
           Calendar cal = de4.getFormat().getCalendar();
         
           hour = cal.get(Calendar.HOUR_OF_DAY);
           DataVariablesStore.setHour(hour);
           
            System.out.println(" Hour " + hour );
            DataVariablesStore.saying3();

        }
      };
    
      
    ChangeListener minute_listener = new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
             Calendar cal = de5.getFormat().getCalendar();
             minute = cal.get(Calendar.MINUTE);
             DataVariablesStore.setMinute(minute);
             
             System.out.println(" Minute " + minute );
            
          }
      };
        
    
    ChangeListener second_listener = new ChangeListener() {
            public void stateChanged(ChangeEvent e) {
               Calendar cal = de6.getFormat().getCalendar();
               second = cal.get(Calendar.SECOND);
               DataVariablesStore.setSecond(second);
               
                System.out.println(" Second " + second );
            }
    };
      
      
    
    s4.addChangeListener(hour_listener);
    s5.addChangeListener(minute_listener);  
    s6.addChangeListener(second_listener);
    
    c.add(new JSeparator(SwingConstants.HORIZONTAL));
    c.add(new JSeparator(SwingConstants.HORIZONTAL));
    
    c.setLayout(new GridLayout(0,2));
    JButton b1 = new JButton("submit");
    b1.setSize(5, 10);
    c.add(b1);
    
    b1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
         
         System.out.println("R0 " + DataVariablesStore.getYear() + " -- " + DataVariablesStore.getMonth() + " -- " + DataVariablesStore.getDate() + " -- " + DataVariablesStore.getHour() + " -- " + DataVariablesStore.getMinute() + " -- " + DataVariablesStore.getSecond());
         
         Checker ch = new Checker();
         Timer timer = new Timer(); // start the timer thread
            Calendar cal = new GregorianCalendar();
                        
            //cal.set(2012, 4, 24, 15, 47, 00);
            
            cal.set(DataVariablesStore.getYear(), DataVariablesStore.getMonth(), DataVariablesStore.getDate(), DataVariablesStore.getHour(), DataVariablesStore.getMinute(), DataVariablesStore.getSecond());
         Date date = cal.getTime();
         timer.schedule(ch, date);
        }
    });
    
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

  }
  
    //***************************************************      
}



С уважением!
PM MAIL   Вверх
dorogoyIV
Дата 24.5.2012, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(bulat01 @  24.5.2012,  15:57 Найти цитируемый пост)
не принтует нужную дату, а если нажать стрелку вниз - тоже наормально не отрабатывает.

Код

  js1.addChangeListener(this);
  js2.addChangeListener(this);
  js3.addChangeListener(this);
 }

 public void stateChanged(ChangeEvent e)
 {
  JSpinner js = (JSpinner)e.getSource();
  SpinnerDateModel model = (SpinnerDateModel)js.getModel();
  int field = model.getCalendarField();

  Calendar c = Calendar.getInstance();
  c.setTime(model.getDate());

  System.out.println(c.get(field));
 }

PM MAIL   Вверх
bulat01
Дата 25.5.2012, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0




Спасибо за ответ,
хотел бы уточнить как его тестили.

у меня пишет что this не применим.

С уважением!
PM MAIL   Вверх
dorogoyIV
Дата 25.5.2012, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Код

import javax.swing.*;
import javax.swing.event.*;
import java.util.*;

public class Main extends JFrame
                  implements ChangeListener
{
 private JSpinner.DateEditor de1, de2, de3;
 private JSpinner js1, js2, js3;

 public Main()
 {
  Calendar c = Calendar.getInstance();
  Date today = c.getTime();

  SpinnerDateModel sdm1 = new SpinnerDateModel(today, null, null, Calendar.DATE);
  SpinnerDateModel sdm2 = new SpinnerDateModel(today, null, null, Calendar.MONTH);
  SpinnerDateModel sdm3 = new SpinnerDateModel(today, null, null, Calendar.YEAR);

  js1 = new JSpinner(sdm1);
  js2 = new JSpinner(sdm2);
  js3 = new JSpinner(sdm3);

  de1 = new JSpinner.DateEditor(js1, "dd");
  de2 = new JSpinner.DateEditor(js2, "MMMM");
  de3 = new JSpinner.DateEditor(js3, "yyyy");

  js1.setEditor(de1);
  js2.setEditor(de2);
  js3.setEditor(de3);

  add(js1, "North");
  add(js2, "Center");
  add(js3, "South");

  js1.addChangeListener(this);
  js2.addChangeListener(this);
  js3.addChangeListener(this);
 }

 public void stateChanged(ChangeEvent e)
 {
  JSpinner js = (JSpinner)e.getSource();
  SpinnerDateModel model = (SpinnerDateModel)js.getModel();
  int field = model.getCalendarField();

  Calendar c = Calendar.getInstance();
  c.setTime(model.getDate());

  // если нужны названия месяцев
  if(field == Calendar.MONTH)
  {
   String s = c.getDisplayName(field, Calendar.LONG,
                               new Locale("ru", "RU"));
   // если в консоли крякозяблы, в свойствах консоли переключаем
   // шрифт на Lucida Console, и набираем ChCp 1251
   System.out.println(s);
  }

  System.out.println(c.get(field) + "\n");
 }

 public static void main(String [] args)
 {
  SwingUtilities.invokeLater(new Runnable() {
   public void run() {
    Main main = new Main();
    main.setDefaultCloseOperation(3);
    main.setBounds(100, 100, 400, 300);
    main.setVisible(true);}});
 }
}


при первом нажатии пишет два раза - где то было на форуме... поищи (там всего две страницы поиск находит по слову JSpinner)
PM MAIL   Вверх
bulat01
Дата 25.5.2012, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0



Спасибо за помощь.
все получилось!

Классный форум!
PM MAIL   Вверх
bulat01
Дата 25.5.2012, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0




Не подскажите как внедрить следующую логику:
как сделать так - что если не выбераешь\не поменяешь дату, а поменяешь только часы - оно берет\принтанет текущую дату после нажатия кнопки Submit?

С уважением!
PM MAIL   Вверх
dorogoyIV
Дата 27.5.2012, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(bulat01 @  25.5.2012,  14:23 Найти цитируемый пост)
Не подскажите как внедрить следующую логику:

новую тему сделай ;)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0770 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.